繁体   English   中英

C ++:最快将矢量文件写入C或C ++中的普通文本模式(非二进制)输出

[英]C++: fastest to write vector file to output in normal text mode (not binary) in C or C++

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

例如,您可以使用std::copy

std::vector<int> v = { 1, 2, 3, 4, 5 };
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM