0

由于 C++17std::filesystem与 非常相似boost::filesystem,我试图做这个问题中提出的同样的事情:Escaping some Directories in iteration

但是我发现在std::filesystem::recursive_directory_iterator没有no_push实现的方法中,最接近的匹配是pop方法,但是它们在功能上完全相等吗?

4

2 回答 2

2

等价于no_push()or no_push(true)disable_recursion_pending()

没有等价于no_push(false).

于 2018-12-27T18:52:32.070 回答
0

它们根本不一样。std::filesystem::recursive_directory_iterator::pop

将迭代器在目录层次结构中上移一级。

其中boost::filesystem::recursive_directory::no_push

防止目录的下一次迭代移动到该目录。

no_push不会更改当前迭代器,因为 aspop会向上移动迭代器。Boost也有pop和标准一样的方法。

标准有选项,没有它们它不会迭代符号链接文件夹,就像您使用no_poshboost 来避免迭代到符号链接文件夹一样。

于 2018-12-27T19:11:46.410 回答