为什么我应该使用迭代器?
例如,如果我有这样的代码:
for (int i = 0; i < vec.size(); i++)
cout << vec[i];
编写的优点是什么?
for (vector<int>::iterator it != vec.begin(); it != n.end(); ++it)
cout << *it;
此外,为什么在第一个例子中更常用写法是
i < vec.size()
和 i++
,而在第二个例子中更常用的是it != begin()
和 ++it
?如何递增迭代器有什么区别,为什么不总是使用等号?我知道迭代器可以在C++11的基于范围的for循环和一些STD算法中非常有用,但在正常的代码中为什么要这样做,因为它更冗长?
std::for_each(begin(vec), end(vec), [](int x) { std::cout << x; });
更好的了。使用算法和迭代器范围而不是手写循环,可以避免一些容易出错的逻辑错误,如偏移量错误等。 - James McNellisvector<int>::iterator it != vec.begin()
;我相当确定那是一个编译时错误。 - Nicol Bolas