Dans une quête visant à optimiser la lecture de fichiers dans un std::vector
La solution réside dans l’utilisation d’itérateurs. En créant un itérateur streambuf d'entrée et en l'utilisant pour construire un vecteur, le contenu du fichier peut être directement affecté au vecteur sans avoir besoin de copies intermédiaires. L'extrait de code suivant illustre cette approche :
#include<iterator> std::ifstream testFile("testfile", std::ios::binary); std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)), std::istreambuf_iterator<char>());
Pour des problèmes de performances, réserver de l'espace dans le vecteur avant l'affectation peut empêcher les réallocations :
std::vector<char> fileContents; fileContents.reserve(fileSize); fileContents.assign(std::istreambuf_iterator<char>(testFile), std::istreambuf_iterator<char>());
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!