如何在 C++ 中使用 `fs::filesystem` 时进行层次遍历

how to level-traverse while using `fs::filesystem` in c++

通过使用fs::filesystem我可以像下面的代码一样预购遍历

 for (const auto& file : fs::recursive_directory_iterator(paths))
        cout << file.path() << endl; 

而且,我发现recursive_directory_iterator只支持预购。 那么如何在 C++ 中使用“级别顺序遍历”?
我想我必须使用 <vector> 。有什么提示吗?

显而易见的答案是不使用 recursive_directory_iterator。

而是使用带有队列的 non-recursive 迭代器。首先将要迭代的目录的根推入队列。

然后进入循环:

  • 从队列中弹出一个目录名
  • 处理该目录
  • 当你遇到一个目录(那是不是一个符号link),将它推入队列
  • 重复直到队列为空

在循环中,您可以在该循环之后将路径推入 std::vector,然后按路径中的 '/' 个字符数对该向量进行排序。