将文件高效读取到 std::vector
当寻求将文件读入 std 的最佳方法时: :vector
对于优化解决方案,规范方法涉及使用迭代器:
#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中文网其他相关文章!