такое C ++ 17 std :: filesystem :: recursive_directory_iterator :: pop, равный boost :: filesystem :: recursive_directory_iterator :: no_push - PullRequest
0 голосов
/ 27 декабря 2018

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

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

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Они совсем не одинаковы. std :: filesystem :: recursive_directory_iterator :: pop

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

Где как boost :: filesystem :: recursive_directory :: no_push

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

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

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

0 голосов
/ 27 декабря 2018

Эквивалент no_push() или no_push(true) равен disable_recursion_pending().

Нет эквивалента no_push(false).

...