首頁 > 後端開發 > C++ > 主體

如何有效率地將檔案讀入 std::vector?

Linda Hamilton
發布: 2024-11-21 06:25:10
原創
967 人瀏覽過

How to Efficiently Read a File into an std::vector?

將文件高效讀取到std::vector

當尋求將文件讀入std 的最佳方法時: :vector,最小化不必要的複製並保持效率至關重要。一個常見的誤解是嘗試在讀取之前在向量中保留空間,但 Reserve() 實際上並沒有將元素插入向量中。

對於最佳化解決方案,規範方法涉及使用迭代器:

#include <iterator>

std::ifstream testFile("testfile", std::ios::binary);
std::vector<char> fileContents((std::istreambuf_iterator<char>(testFile)),
                              std::istreambuf_iterator<char>());
登入後複製

在這種方法中,定義了兩個迭代器。一個指向輸入檔案流的開頭,另一個指向結尾。然後透過迭代這些迭代器定義的範圍來建立向量。

為了減少讀取過程中潛在的重新分配,可以使用reserve()方法:

#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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板