Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Membaca Fail ke dalam std::vector Tanpa Overhed yang Tidak Perlu?
Kaedah Alternatif untuk Membaca Fail ke dalam std::vector
Membaca fail ke dalam std::vector
Salah satu kaedah sedemikian ialah memanfaatkan iterator daripada kelas std::istreambuf_iterator. Pendekatan ini menghapuskan salinan yang tidak diperlukan dan membenarkan akses terus kepada kandungan fail. Bentuk kanonik pendekatan ini ialah:
#include<iterator> // ... std::ifstream testFile("testfile", std::ios::binary); std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)), std::istreambuf_iterator<char>());
Untuk mengelakkan pengagihan semula, pertimbangkan untuk menempah ruang dalam vektor terlebih dahulu:
#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>());
Atas ialah kandungan terperinci Bagaimana untuk Cekap Membaca Fail ke dalam std::vector Tanpa Overhed yang Tidak Perlu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!