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