std::vector<int> v{2,4,6,8,10,12,14,16,18,20};
// print the numbers
std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
此处std :: copy用于写入标准输出。这比对for循环中的矢量元素使用std :: cout更快
for(auto element: v) std::cout << element << " ";
我找不到太多有关它们如何写入两者的输出缓冲区的信息。
答案 0 :(得分:2)
要大致了解两者的相对性能,请点击此处查看基准测试结果:http://quick-bench.com/wGYYPBXEgvLrkyp5gpJOnIpt7A4
我必须输出到std::stringstream
而不是std::cout
才能保持快速入门。它提供了有关基础实现的原始性能的一些见解,但没有提供有关它们如何与高度依赖于操作系统的输出流(例如std::cout
)交叉影响的信息。
因此,仅凭如此简单的基准很难得出任何明确的结论。因此,从性能的角度来看,两种方法之间实际上并没有太大的差异来偏爱一种方法。