由于C ++ 17 std::filesystem
与boost::filesystem
非常相似,因此我试图做同样的事情来询问这个问题:Escaping some Directories in iteration
但是我发现在std::filesystem::recursive_directory_iterator
中没有实现no_push
方法,与之最接近的匹配是pop
方法,但是它们在功能上是否完全相同?
答案 0 :(得分:1)
与no_push()
或no_push(true)
等效的是disable_recursion_pending()
。
没有等效的no_push(false)
。
答案 1 :(得分:0)
它们根本不一样。 std::filesystem::recursive_directory_iterator::pop
将迭代器在目录层次结构中上移一层。
为boost::filesystem::recursive_directory::no_push
防止目录上的下一次迭代移入该目录。
no_push
不会更改当前的迭代器,因为pop
将迭代器向上移动。 Boost还具有与标准方法相同的pop
方法。
该标准具有选项,没有这些选项,它将不会迭代symlink文件夹,就像您将no_posh
与boost一起使用时一样,以避免迭代到symlink文件夹中。