РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
344 of 815 menu

Категория forward_iterator

Категория forward_iterator описывает однонаправленный итератор в C++. Такой итератор умеет читать элементы, изменять их и перемещаться по последовательности только вперед. В отличие от input_iterator, однонаправленный итератор можно копировать, сохранять копии и проходить последовательность несколько раз. При этом в первый параметр обычно передается сам итератор, а во второй - количество шагов или другой итератор для сравнения.

Синтаксис

#include <iterator> // проверка категории итератора std::forward_iterator<It> // основные операции *it ++it it++ it1 == it2 it1 != it2

Пример

Давайте создадим однонаправленный итератор для списка и пройдем по нему до конца:

#include <iostream> #include <list> #include <iterator> using namespace std; int main() { list<int> lst = {1, 2, 3, 4, 5}; forward_list<int>::iterator it = lst.begin(); while (it != lst.end()) { cout << *it << " "; ++it; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте проверим, что итератор списка относится к категории forward_iterator:

#include <iostream> #include <list> #include <iterator> using namespace std; int main() { list<int>::iterator it; if (is_same< iterator_traits<list<int>::iterator>::iterator_category, forward_iterator_tag >::value) { cout << "forward_iterator" << endl; } else { cout << "other iterator" << endl; } return 0; }

Результат выполнения кода:

"forward_iterator"

Пример

Давайте изменим элементы контейнера через однонаправленный итератор:

#include <iostream> #include <forward_list> using namespace std; int main() { forward_list<int> lst = {1, 2, 3, 4, 5}; for (auto it = lst.begin(); it != lst.end(); ++it) { *it = *it * 2; } for (auto it = lst.begin(); it != lst.end(); ++it) { cout << *it << " "; } cout << endl; return 0; }

Результат выполнения кода:

2 4 6 8 10

Смотрите также

  • категория input_iterator,
    которая описывает итератор только для чтения
  • категория bidirectional_iterator,
    которая позволяет двигаться назад
  • категория random_access_iterator,
    которая поддерживает произвольный доступ
  • функция advance,
    которая сдвигает итератор на заданное число шагов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить