在优化 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中文网其他相关文章!