Мне интересно, как управляется память, когда разные файлы хранятся в карте строковых векторов.Я пытался прочитать разные файлы по 10 месяцев каждый, чтобы поместить их в память, и когда я проверяю память с помощью KSySGuard, появляется больше, чем в два раза больше памяти моих файлов (~ 70 месяцев).Я даю вам пример кода для этого: есть функция readfile ():
std::vector<std::string> read_file(std::string& path){
ifstream fichier(path);
std::vector<std::string> fich;
if(fichier){
string ligne;
while(getline(fichier, ligne)){
fich.push_back(ligne);
}
}
fichier.close();
return fich;
}
Эта функция используется в другой, которая строит мою карту:
std::map<std::string, std::vector<std::string>> buildmap(std::string folder){
std::map<std::string,std::vector<std::string>> evaluations; std::vector<std::string> vecFiles = {"file1","file2","file3"};
for( auto i = 0; i < vecFiles.size(); i++ )
{
std::stringstream strad;
strad <<vecFiles[i] ;
std::string path(folder+vecFiles[i]);
std::vector<std::string> a = read_file(path);
evaluations[strad.str()]=a;
}
return evaluations;
}
Итак, яНе понимаю, почему объем памяти такой большой по сравнению с размерами файлов.Есть ли более эффективный способ создания такого типа контейнера?