【发布时间】:2019-10-15 17:46:13
【问题描述】:
我正在尝试从文件夹树中选择一个随机文件,从固定路径开始并在所有子文件夹(或所选文件夹本身)中递归“搜索”。
我的想法是:制作文件列表,计算文件数量,在此范围内选择一个随机数,然后在该索引处选择文件。
这是我的代码:
// create list of all files
std::vector<std::string> paths;
for (const auto &entry : std::filesystem::recursive_directory_iterator(mPathDirectory)) {
if (!std::filesystem::is_directory(entry)) {
paths.push_back(entry.path().string());
}
}
// pick random file
size_t numberOfFiles = paths.size();
int indexRandomFile = (int)round(rescale(random::uniform(), 0.0, 1.0, 0, numberOfFiles - 1));
return paths[indexRandomFile];
还有O3,考虑到我有一个巨大的文件列表并且我在一个“音频”应用程序中(应该更快),它非常慢。
你有什么更聪明的想法吗?像O(1)这样的东西? :P
【问题讨论】:
标签: c++ performance file random