香草提出了一个方法来遍历向量:Exception C++第1章第1部分的copy()算法如何工作?
for(vector<int>::iterator i = v.begin(); i < v.end(); i++) {
cout << *i << endl;
}
他替换此代码:
copy(v.begin(), v.end(), ostream_iterator<int>(cout, "\n"));
我努力理解如何,或者为什么这个工程。我抬起头,复印功能和文件说,它相当于:“当我们*输出迭代会发生什么”
template<class InputIterator, class OutputIterator>
OutputIterator copy (InputIterator first, InputIterator last,
OutputIterator result)
{
while (first!=last) {
*result = *first;
++result; ++first;
}
return result;
}
所以我公司开发的问题,
reference operator*() const;
Dereference iterator
Returns *this.
这就是我困惑的地方。我没有看到OutputIterator指向什么的定义。此外,我看不到*result = *first;
如何可能转化为调用cout << *i;
看看ostream_iterator。它的运算符=()会发挥魔力。 –
顺便说一句:这是关于如何使用算法的一个很好的例子,但是在C++ 11'for(const auto&obj:myObjVector){std :: cout << obj << std :: endl; }'因其简单性而被推荐。 – stefaanv