Я возвращаюсь на С++ после того, как немного ушел, пытаясь стереть старую дыню.
В Java Iterator - это интерфейс к контейнеру со следующими методами: hasNext(), next() и remove(). Наличие hasNext() означает, что имеет понятие предела для проходящего контейнера.
//with an Iterator
Iterator<String> iter = trees.iterator();
while (iter.hasNext())
{
System.out.println(iter.next());
}
В стандартной библиотеке шаблонов С++ итераторы, похоже, представляют тип данных или класс, которые поддерживают оператор ++ и operator ==, но имеют концепцию ограничения, поэтому сравнение требуется, прежде чем перейти к следующий пункт. Предел должен проверяться пользователем, сравнивающим два итератора в нормальном случае, вторым итератором является конец контейнера.
vector<int> vec;
vector<int>::iterator iter;
// Add some elements to vector
v.push_back(1);
v.push_back(4);
v.push_back(8);
for(iter= v.begin(); iter != v.end(); iter++)
{
cout << *i << " "; //Should output 1 4 8
}
Интересная часть здесь заключается в том, что в С++ указатель является итератором для массива. STL взял то, что существовало и строил вокруг него соглашение.
Это какая-то дальнейшая уловка тому, что мне не хватает?