§ 14. Преобразование элементов массива
14.4. Понятие итератора
| 
 Итератор — обобщенный указатель [1], который позволяет пользователю перебирать элементы контейнера, без необходимости знать, как реализован сам контейнер. Вектор является контейнером, в котором реализован последовательный доступ к элементам, итератор позволяет обойти все элементы вектора, перемещение происходит элемент за элементом. Итераторы позволяют обращаться к элементам вектора без использования индексов. Для вектора определены стандартные итераторы begin() и end(). Итератор begin() указывает на первый элемент в векторе. Итератор end() – на место после последнего элемента вектора. Для любого итератора (it) доступны следующие операции (пример 14.6): 
 Для вектора итератор обеспечивает дополнительную функциональность: 
 Начиная со стандарта C++11, обход вектора с помощью итератора может происходить следующим образом: vector <int> a(n); for (auto i: a)   cout << i << " "; [1] Указатель — переменная, обозначающая адрес памяти. Указатель предназначен для прямого обращения по адресу памяти к объекту, который расположен по этому адресу.  | 
 Для вектора определены также реверсивные (обратные) итераторы, которые позволяют перебирать элементы контейнера в обратном направлении. Для получения реверсивного итератора применяются функции rbegin() и rend(). Итератор rbegin() указывает на конец текущего вектора, а итератор rend() — на начало вектора. Пример 14.6. Операции с итератором 
 Рассмотрим операции: 
 Итератор it указывает на начало вектора. Значение переменной x — значение элемента вектора, на который указывает итератор. Будет выведено значение 1. 
 Итератор сместился на один элемент и теперь указывает на элемент с индексом 1, будет выведено значение 2. 
 Итератор сместился на 3 элемента от начала и указывает на элемент с индексом 3, будет выведено значение 5. 
 После предыдущей операции итератор указывает на элемент с индексом 3, поэтому будет выведено false. 
 Будут выведены значения 3 и 5. Значение 5 — количество элементов в векторе. Циклу foreach соответствует следующая запись цикла for: 
 или 
  |