ostream_iterator有效吗?

时间:2017-04-19 10:02:07

标签: c++ stl iterator

我今天刚刚学会了如何使用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 << " ";

哪一个更有效率?

提前谢谢!

1 个答案:

答案 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循环中的代码非常相似,除了分隔符的条件输出(与格式化整数并输出它相比,它花费零时间。)