c++ - 使用 STL 将大型 STL vector 写入文件的最快方法

标签 c++ stl

我有一个很大的字符 vector (10^9 个元素),我想知道将这种 vector 写入文件的最快方法是什么。到目前为止,我一直在使用下一个代码:

vector<char> vs;
// ... Fill vector with data
ofstream outfile("nanocube.txt", ios::out | ios::binary);
ostream_iterator<char> oi(outfile, '\0');
copy(vs.begin(), vs.end(), oi);

对于此代码,将所有数据写入文件大约需要两分钟。实际问题是:“我能否使用 STL 使其更快以及如何”?

最佳答案

要写入如此大量的数据 (~1GB),您应该直接写入输出流,而不是使用输出迭代器。由于 vector 中的数据是连续存储的,因此这将起作用并且应该更快。

ofstream outfile("nanocube.txt", ios::out | ios::binary);
outfile.write(&vs[0], vs.size());

关于c++ - 使用 STL 将大型 STL vector 写入文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1693089/

相关文章:

c++ - Qt 托盘图标拖放

c++ - 是否可以将 std::vector 放置到共享内存中?

c++ - 使用 lambda 的多映射谓词

c++ - 更新 std::set 以仅保留最小值

c++ - 如果我将它绑定(bind)到 "this", std::bind 是否保留对象的引用/拷贝?

C++ 避免调用抽象基类的构造函数

c++ - 按偶数和奇数排序

c++ - CppUnit 库充满 undefined reference ?

c++ - 将可变数量的参数传递给构造函数

c++ - std::min_element 编译错误