Такое 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
метод, но они точно одинаковы по функциональности?
2 ответа
Эквивалент no_push()
или же no_push(true)
является disable_recursion_pending()
,
Там нет эквивалента no_push(false)
,
Они совсем не одинаковые. станд:: файловая система::recursive_directory_iterator:: поп
Перемещает итератор на один уровень вверх в иерархии каталогов.
Где как boost::filesystem::recursive_directory::no_push
Предотвращает перемещение следующей итерации в каталоге в этот каталог.
no_push
не меняет текущий итератор, где как pop
перемещает итератор вверх. Boost также имеет pop
метод, который совпадает со стандартом.
Стандарт имеет опции, без них он не будет перебирать папку с символическими ссылками, где вы бы использовали no_posh
с boost, чтобы избежать итерации в папку символических ссылок.