std::vector
解決策はイテレータの使用にあります。入力 streambuf イテレータを作成し、それを使用してベクトルを構築すると、中間コピーを必要とせずに、ファイルの内容をベクトルに直接割り当てることができます。次のコード スニペットは、このアプローチを示しています。
#include<iterator> std::ifstream testFile("testfile", std::ios::binary); std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)), std::istreambuf_iterator<char>());
パフォーマンスの観点から、代入前にベクトル内のスペースを確保すると、再割り当てを防ぐことができます。
std::vector<char> fileContents; fileContents.reserve(fileSize); fileContents.assign(std::istreambuf_iterator<char>(testFile), std::istreambuf_iterator<char>());
以上がオーバーヘッドなしでファイルを効率的に std::vector に読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。