Heim >Backend-Entwicklung >C++ >Wie liest man Dateien effizient und ohne unnötigen Overhead in std::vector ein?
Alternative Methoden zum Einlesen von Dateien in std::vector
Einlesen von Dateien in std::vector
Eine dieser Methoden besteht darin, Iteratoren aus der Klasse std::istreambuf_iterator zu nutzen. Dieser Ansatz eliminiert unnötige Kopien und ermöglicht den direkten Zugriff auf den Inhalt der Datei. Die kanonische Form dieses Ansatzes lautet:
#include<iterator> // ... std::ifstream testFile("testfile", std::ios::binary); std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)), std::istreambuf_iterator<char>());
Um Neuzuweisungen zu verhindern, sollten Sie im Voraus Platz im Vektor reservieren:
#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>());
Das obige ist der detaillierte Inhalt vonWie liest man Dateien effizient und ohne unnötigen Overhead in std::vector ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!