4

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吗?我的猜测显然是肯定的

4

1 回答 1

3

您可以使用std::copy例如

std::vector<int> v = { 1, 2, 3, 4, 5 };
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
于 2013-04-07T00:27:21.133 回答