Maison > développement back-end > C++ > le corps du texte

Comment lire efficacement des fichiers dans std :: vector sans surcharge inutile ?

Patricia Arquette
Libérer: 2024-11-10 21:35:03
original
1038 Les gens l'ont consulté

How to Efficiently Read Files into std::vector Without Unnecessary Overhead?

Méthodes alternatives pour lire des fichiers dans std::vector

Lecture de fichiers dans std::vector l’efficacité est essentielle pour les tâches de traitement des données. Cependant, certaines méthodes, telles que reserve() et resize(), entraînent une surcharge supplémentaire en raison de l'initialisation des éléments. Pour cette raison, des méthodes alternatives peuvent être préférées.

L'une de ces méthodes consiste à exploiter les itérateurs de la classe std::istreambuf_iterator. Cette approche élimine les copies inutiles et permet un accès direct au contenu du fichier. La forme canonique de cette approche est :

#include<iterator>
// ...

std::ifstream testFile("testfile", std::ios::binary);
std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)),
                               std::istreambuf_iterator<char>());
Copier après la connexion

Pour éviter les réallocations, pensez à réserver au préalable de l'espace dans le vecteur :

#include<iterator>
// ...

std::ifstream testFile("testfile", std::ios::binary);
std::vector<char> fileContents;
fileContents.reserve(fileSize);
fileContents.assign(std::istreambuf_iterator<char>(testFile),
                    std::istreambuf_iterator<char>());
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal