такое C ++ 17 std :: filesystem :: recursive_directory_iterator :: pop, равный boost :: filesystem :: recursive_directory_iterator :: no_push

Как в C ++ 17 std::filesystem очень похоже на boost::filesystemЯ пытался сделать то же самое, заданное в этом вопросе: Избегание некоторых каталогов в итерации

Но я узнал, что в std::filesystem::recursive_directory_iterator здесь нет no_push метод реализован, и ближайшим соответствием является pop метод, но они точно одинаковы по функциональности?

0

Решение

Эквивалент no_push() или же no_push(true) является disable_recursion_pending(),

Там нет эквивалента no_push(false),

1

Другие решения

Они совсем не одинаковые. станд :: файловая система :: recursive_directory_iterator :: поп

Перемещает итератор на один уровень вверх в иерархии каталогов.

В то время как повышение :: файловая система :: recursive_directory :: no_push

Предотвращает перемещение следующей итерации каталога в этот каталог.

no_push не меняет текущий итератор, где как pop перемещает итератор вверх. Boost также имеет pop метод, который совпадает со стандартом.

Стандарт имеет опции, без них он не будет перебирать папку с символическими ссылками, где вы бы использовали no_posh с boost, чтобы избежать итерации в папку символических ссылок.

0

По вопросам рекламы [email protected]