Sobes.tech
Back to questions
Junior — Middle
91

Можешь ли ты перечислить типы итераторов и объяснить их особенности?

Answer from AI

sobes.tech AI

В C++ существует несколько типов итераторов, которые различаются по возможностям и поддерживаемым операциям:

  1. Input Iterator — позволяет читать данные по одному элементу за раз, поддерживает операции инкремента и разыменования. Используется для однократного прохода по данным.

  2. Output Iterator — позволяет записывать данные по одному элементу, поддерживает инкремент и разыменование для записи. Используется для вывода данных.

  3. Forward Iterator — сочетает возможности Input и Output итераторов, поддерживает многократный проход по данным в одном направлении.

  4. Bidirectional Iterator — расширяет Forward Iterator, добавляя возможность перемещения назад (декремент).

  5. Random Access Iterator — самый мощный тип, поддерживает все операции предыдущих, а также произвольный доступ по индексу, арифметику указателей и сравнение.

Пример использования random access итератора с вектором:

#include <vector>
#include <iostream>

int main() {
    std::vector<int> v = {10, 20, 30, 40};
    std::vector<int>::iterator it = v.begin();
    std::cout << *it << "\n";       // 10
    it += 2;
    std::cout << *it << "\n";       // 30
    return 0;
}

Каждый тип итератора определяет, какие операции с ним допустимы, что важно для выбора подходящего алгоритма STL.