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

is C++17 std::filesystem::recursive_directory_iterator::pop equal to boost::filesystem::recursive_directory_iterator::no_push

由于 C++17 std::filesystemboost::filesystem 非常相似,我试图做同样的事情:Escaping some Directories in iteration

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

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

没有 no_push(false) 的等价物。

它们完全不同。 std::filesystem::recursive_directory_iterator::pop

Moves the iterator one level up in the directory hierarchy.

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

Prevents the next iteration on a directory from moving into that directory.

no_push 不会更改当前迭代器,而 pop 会向上移动迭代器。 Boost 还有一个 pop 方法,与标准方法相同。

标准有选项,如果没有它们,它将不会迭代符号链接文件夹,而您可以使用 no_posh 和 boost 来避免迭代到符号链接文件夹。