Boost Filesystem Directory_iterator的非确定性执行

Non deterministic execution of boost filesystem directory_iterator

本文关键字:非确定 确定性 执行 iterator Filesystem Directory Boost      更新时间:2023-10-16

以下代码在给定的目录上递归迭代,并每次以相同的顺序打印其内容。

是否可以更改目录迭代器以随机打印目录内容(即不使用矢量来存储结果,然后随机打印向量内容)?

)?
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
int main(int argc, char** argv)
{
  boost::filesystem::path dataPath("/home/test/");
  boost::filesystem::recursive_directory_iterator endIterator;
  // Traverse the filesystem and retrieve the name of each root object found
  if (boost::filesystem::exists(dataPath) && boost::filesystem::is_directory(dataPath)) {
    for (static boost::filesystem::recursive_directory_iterator directoryIterator(dataPath); directoryIterator != endIterator;
     ++directoryIterator) {
      if (boost::filesystem::is_regular_file(directoryIterator->status())) {
        std::string str = directoryIterator->path().string();
        cout << str << endl;
        }
    }
}

}

大多数OS(例如Windows的Findfirstfile)不要以任何特定的顺序返回条目,因此无法按照您的需求订购它们。最好的选择是进行订购/自行改组。