由于 C++17std::filesystem
与 非常相似boost::filesystem
,我试图做这个问题中提出的同样的事情:Escaping some Directories in iteration
但是我发现在std::filesystem::recursive_directory_iterator
没有no_push
实现的方法中,最接近的匹配是pop
方法,但是它们在功能上完全相等吗?
由于 C++17std::filesystem
与 非常相似boost::filesystem
,我试图做这个问题中提出的同样的事情:Escaping some Directories in iteration
但是我发现在std::filesystem::recursive_directory_iterator
没有no_push
实现的方法中,最接近的匹配是pop
方法,但是它们在功能上完全相等吗?
等价于no_push()
or no_push(true)
。disable_recursion_pending()
没有等价于no_push(false)
.
它们根本不一样。std::filesystem::recursive_directory_iterator::pop
将迭代器在目录层次结构中上移一级。
其中boost::filesystem::recursive_directory::no_push
防止目录的下一次迭代移动到该目录。
no_push
不会更改当前迭代器,因为 aspop
会向上移动迭代器。Boost也有pop
和标准一样的方法。
标准有选项,没有它们它不会迭代符号链接文件夹,就像您使用no_posh
boost 来避免迭代到符号链接文件夹一样。