首頁 >後端開發 >C++ >如何有效率地將檔案讀入 std::vector?

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

Linda Hamilton
Linda Hamilton原創
2024-11-21 06:25:101010瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn