У меня есть std::vector<std::string>
всех файлов в каталоге:
// fileList
folder/file1
folder/file2
file3
file4.ext
и std::set<std::string>
имен файлов и то же самое для всех используемых префиксов папок:
// set1
file2
file4.ext
// set2
folder
Мне нужно сгенерировать полные (относительные) пути ко ВСЕМ файлам в set1, но я не вижу способа сделать это без итерации по set2 set1.size()
раз, умноженному на fileList.size()
ОБНОВЛЕНИЕ: некоторые пояснения:
Ожидаемый вывод для приведенного выше примера:
folder/file2
file4.ext
Предлагаемое (неэффективное?) Решение, возможно, слишком многословное и с глупой реализацией:
// pseudo-code!
vector<string> allpossibleFullPaths( set1.size()*set2.size() );
vector<string> output;
foreach( prefix_in_set2 )
foreach( filename_in_set1 )
allpossibleFullpaths.push_back( set2[i] + "/" set1[i] )
foreach( filename_in_fileList )
files.push_back( find( fileList[i] in allpossibleFullPaths ) );
(быстрый псевдокод-ish) Это кажется очень неэффективным, есть ли лучший способ сделать эти совпадения?
Спасибо!
PS: лучше бы еще был способ отследить удвоения, чтобы я мог предупредитьпользователь об этом.