std::vector にファイルを読み取るための代替方法
std::vector にファイルを読み取る
そのようなメソッドの 1 つは、std::istreambuf_iterator クラスのイテレータを利用することです。このアプローチにより、不要なコピーが排除され、ファイルの内容に直接アクセスできるようになります。このアプローチの標準形式は次のとおりです。
#include<iterator> // ... std::ifstream testFile("testfile", std::ios::binary); std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)), std::istreambuf_iterator<char>());
再割り当てを防ぐために、事前にベクトル内のスペースを予約することを検討してください。
#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>());
以上が不必要なオーバーヘッドを発生させずにファイルを効率的に std::vector に読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。