Как в C ++ 17 std::filesystem
очень похоже на boost::filesystem
Я пытался сделать то же самое, заданное в этом вопросе: Избегание некоторых каталогов в итерации
Но я узнал, что в std::filesystem::recursive_directory_iterator
здесь нет no_push
метод реализован, и ближайшим соответствием является pop
метод, но они точно одинаковы по функциональности?
Эквивалент no_push()
или же no_push(true)
является disable_recursion_pending()
,
Там нет эквивалента no_push(false)
,
Они совсем не одинаковые. станд :: файловая система :: recursive_directory_iterator :: поп
Перемещает итератор на один уровень вверх в иерархии каталогов.
В то время как повышение :: файловая система :: recursive_directory :: no_push
Предотвращает перемещение следующей итерации каталога в этот каталог.
no_push
не меняет текущий итератор, где как pop
перемещает итератор вверх. Boost также имеет pop
метод, который совпадает со стандартом.
Стандарт имеет опции, без них он не будет перебирать папку с символическими ссылками, где вы бы использовали no_posh
с boost, чтобы избежать итерации в папку символических ссылок.