Dalam usaha untuk mengoptimumkan bacaan fail menjadi std::vector
Penyelesaiannya terletak pada penggunaan iterator. Dengan mencipta iterator streambuf input dan menggunakannya untuk membina vektor, kandungan fail boleh terus diberikan kepada vektor tanpa memerlukan salinan perantaraan. Coretan kod berikut menggambarkan pendekatan ini:
#include<iterator> std::ifstream testFile("testfile", std::ios::binary); std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)), std::istreambuf_iterator<char>());
Untuk kebimbangan prestasi, menempah ruang dalam vektor sebelum tugasan boleh menghalang pengagihan semula:
std::vector<char> fileContents; fileContents.reserve(fileSize); fileContents.assign(std::istreambuf_iterator<char>(testFile), std::istreambuf_iterator<char>());
Atas ialah kandungan terperinci Bagaimana untuk Cekap Membaca Fail menjadi `std::vector` Tanpa Overhed?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!