是C ++ 17 std :: filesystem :: recursive_directory_iterator :: pop等于boost :: filesystem :: recursive_directory_iterator :: no_push

时间:2018-12-27 17:56:32

标签: c++ c++17 std-filesystem

由于C ++ 17 std::filesystemboost::filesystem非常相似,因此我试图做同样的事情来询问这个问题:Escaping some Directories in iteration

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

2 个答案:

答案 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文件夹中。