Подтвердить что ты не робот

Типы итератора: выходные и входные данные против прямого или случайного доступа Iterator

Сколько типов итераторов существует в С++ STL? На данный момент я знаю об этом:

  • Итератор вывода
  • Входной итератор
  • Вперед Iterator
  • Итератор с произвольным доступом

Есть ли еще? Каковы различия между ними? Каковы ограничения и характеристики каждого из них? Какой тип используется, когда?

4b9b3361

Ответ 1

Если вы можете, найдите и прочитайте "Стандартная библиотека С++: учебник и справочник". Эта книга содержит целую главу о итераторах STL.

Вот что-то из книги:

Iterator Category  Ability                          Providers
-----------------  -------------------------------  ----------------------------
Input iterator     Reads forward                    istream
Output iterator    Writes forward                   ostream, inserter
Forward iterator   Reads/writes forward             forward_list,
                                                      unordered_[multi]set,
                                                      unordered_[multi]map
Bidirectional it.  Reads/writes forward/backward    list, [multi]set, [multi]map
Random access it.  Reads/writes with random access  vector, deque string, array 

Ответ 2

Стандарт С++ также имеет концепцию двунаправленного итератора, которая представляет собой форвардный итератор, который также может вернуться назад (с помощью operator--). Вместе эти пять составляют всю иерархию итераторов в параграфе 24.2 стандарта С++.

Старый STL также имел концепцию Trivial Iterator. Подробнее о различных итераторах смотрите в разделе представили гораздо более тонкий набор концепций итератора.

Ответ 3

Я подозреваю, что вы хорошо знаете ответ, но в любом случае эти диаграммы очень полезны при сортировке этого