将std::vector
(或任何连续的容器)写入非二进制文件(即文本模式)的最快方法是什么?就我而言,速度很重要,矢量不断产生并写入文件。
在二进制模式下,它是相当直接的,因为std::vector
在内存中是连续的。注意我不想依赖Boost序列化。 (虽然我可能被迫以最优雅的方式......)。我还需要一系列字符来分隔元素(即空格)
这就是我现在正在做的事情(是一个例子),但即使我为<<
编写了一个运算符vector
,这也非常通用。是否有更优化的代码版本,还是我留下了这个?
std::ofstream output(...);
...
template <typename T>
write_vec_to_file (const &std::vector<T> v)
{
for (auto i: v)
output << i << " ";
output << "\n";
}
作为一个附带问题,如果一个人继续打电话std::cout << ...
,那么开始std::cout
会产生一些开销吗?我的猜测显然是肯定的
答案 0 :(得分:3)
您可以使用std::copy
例如
std::vector<int> v = { 1, 2, 3, 4, 5 };
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));