我今天刚刚学会了如何使用ostream_iterator
,但我不知道这与正常的for-loop方式相比是否有效。
以下是代码:
//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 << " ";
哪一个更有效率?
提前谢谢!
答案 0 :(得分:1)
std::copy
正在使用迭代器中的operator=
。它看起来像这样
ostream_iterator& operator=(const _Ty& _Val)
{ // insert value into output stream, followed by delimiter
*_Myostr << _Val;
if (_Mydelim != 0)
{
*_Myostr << _Mydelim;
}
return (*this);
}
看起来与你的for循环中的代码非常相似,除了分隔符的条件输出(与格式化整数并输出它相比,它花费零时间。)