Класс iterator
Класс iterator является фундаментальным понятием в стандартной библиотеке C++.
Он представляет собой объект, который указывает на элемент в контейнере (например, в векторе,
списке или строке) и позволяет перемещаться по этим элементам. Итераторы обеспечивают
единый интерфейс для доступа к данным, скрывая внутреннее устройство контейнера.
В данной статье мы рассмотрим общее понятие итератора, его категории и базовый синтаксис
использования в алгоритмах.
Синтаксис
// Объявление итератора для контейнера
std::container_type::iterator it;
// Получение итератора на начало и конец
auto begin = container.begin();
auto end = container.end();
// Перемещение по контейнеру
for (auto it = begin; it != end; ++it) {
// доступ к элементу через *it
}
Пример
Давайте создадим вектор целых чисел и используем итератор для вывода всех его элементов на экран:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
// Получаем итератор на начало вектора
vector<int>::iterator it = vec.begin();
// Проходим по всем элементам до конца
while (it != vec.end()) {
cout << *it << " ";
++it;
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Итераторы можно использовать с алгоритмами стандартной библиотеки.
Давайте найдем сумму элементов вектора с помощью алгоритма accumulate:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
// Используем итераторы начала и конца для алгоритма
int sum = accumulate(vec.begin(), vec.end(), 0);
cout << "Sum: " << sum << endl;
return 0;
}
Результат выполнения кода:
"Sum: 15"