stereoMatching
2nd February 2014, 11:58
Do you know a faster solution to find all of the directories by Qt(QDirIterator is too slow)
QDirIterator directories(dir_, QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
QStringList dirs;
while(directories.hasNext()){
directories.next();
dirs.push_back(directories.filePath());
}
//codes base on BFS(breadth first search)
QStringList scan_dir_recursive(QDir const &dir)
{
std::queue<QString> queue;
queue.push(dir.absolutePath());
QStringList results;
while (!queue.empty()) {
auto const subdir_name = queue.front();
queue.pop();
results.push_back(subdir_name);
QDir subdir(subdir_name);
auto const &directories = subdir.entryInfoList({},
QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot);
for (auto const &data : directories) {
queue.push(data.absoluteFilePath());
}
}
return results;
}
QDirIterator directories(dir_, QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
QStringList dirs;
while(directories.hasNext()){
directories.next();
dirs.push_back(directories.filePath());
}
//codes base on BFS(breadth first search)
QStringList scan_dir_recursive(QDir const &dir)
{
std::queue<QString> queue;
queue.push(dir.absolutePath());
QStringList results;
while (!queue.empty()) {
auto const subdir_name = queue.front();
queue.pop();
results.push_back(subdir_name);
QDir subdir(subdir_name);
auto const &directories = subdir.entryInfoList({},
QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot);
for (auto const &data : directories) {
queue.push(data.absoluteFilePath());
}
}
return results;
}