0
我刚刚学会了如何今天使用ostream_iterator
,但我不知道这是否比正常的for-loop方法更有效。ostream_iterator是否有效?
下面是代码:
//The first one
vector<int> v = {1, 2, 3, 4, 5};
ostream_iterator<int> osit(cout, " ");
copy(v.begin(), v.end(), osit);
而且
//The second one
vector<int> v = {1, 2, 3, 4, 5};
for (int i : v) cout << i << " ";
哪一个更有效?
预先感谢您!
大部分时间使用流是低效的,特别是当你与底层系统交互时('cout' /'cin' /'fstream'/...),所以你不会看到两者之间的区别这些方法的“效率”将被流的低效率所掩盖。 – Holt
基于范围的for循环需要稍微少一些的输入。 –
定义“高效”。通过一些措施(如键入字符的数量),第二个可能更有效。其他人(例如,不止一次使用同一个'ostream_iterator',输出int的多个向量的能力),第一个可能是。如果您的度量是CPU周期或内存使用量,那么结果取决于编译器的质量和标准库的编码。所以,真正的答案是“取决于”。 – Peter