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

Что такое Итераторы, С++?

Что такое итераторы в С++?

4b9b3361

Ответ 1

Итераторы - это путь прохождения коллекции объектов. Как правило, они позволяют вам последовательно обращаться к контейнеру STL (стандартной библиотеки шаблонов) способами, аналогичными доступу к классическому массиву C с указателем. Чтобы получить доступ к объекту через итератор, вы разыгрываете его как указатель на C. Чтобы получить доступ к следующему объекту в коллекции, вы используете оператор increment (++). В некоторых контейнерах есть несколько итераторов, которые позволяют вам перемещать коллекцию по-разному.

Ответ 2

Хотя это изначально кажется довольно очевидным, на самом деле это более глубокий вопрос, чем вы можете понять. Вместе с Полом Макджоном Александр Степанов (дизайнер оригинала, для тех, кто этого не знал) недавно выпустил книгу под названием "Элементы программирования" (aka EOP). Полнота шестой главы этой книги посвящена именно итераторам, и совсем другая часть книги тесно связана с итераторами. Любой, кто действительно хочет знать итераторы в полной мере, может рассмотреть возможность чтения этой книги.

Предупреждение: EOP не для слабонервных. Он относительно короткий (~ 260 страниц), но довольно плотный. Говоря по опыту, ранний переход немного сбивает с толку. Моя первоначальная реакция на первую главу была более или менее "хорошо, это настолько очевидно, что ее вряд ли стоит читать. Я действительно начал программирование до прошлой недели!"

К счастью, я смотрел на упражнения и пытался сделать пару - и хотя я думал о предметах как очевидные, упражнения требуют строгих доказательств. Это немного похоже на просьбу доказать (в математическом смысле), что вода мокрая. Вы в конечном итоге просто нуждаетесь в том, чтобы прочитать главу пару раз, чтобы пройти мимо своего собственного предвзятого представления о том, что вы уже знаете ответы, поэтому вы можете посмотреть на реальный вопрос - что действительно означает "мокрый"; каковы основные характеристики "влажности"?

Ответ 3

http://en.wikipedia.org/wiki/Iterator

Что-то, что позволяет вам проходить через все в массиве один за другим.

В С++ я думаю, что вы говорите о "for_each"... Насколько я знаю, С++ на самом деле не имеет "foreach" в отличие от языков, подобных С#. Тем не менее, в стандартной библиотеке шаблонов есть.

Ответ 4

От стр. 80 из Ускоренный С++:

Итератором является значение, которое

  • Идентифицирует контейнер и элемент в контейнере
  • Позволяет нам изучить значение, хранящееся в этом элементе
  • Предоставляет операции перемещения между элементами в контейнере
  • Ограничивает доступные операции способами, соответствующими тому, что контейнер может эффективно обрабатывать

Ответ 5

Они представляют собой позицию в последовательности. Само по себе они немного больше, чем любопытства, но при разыменовании они приводят к стоимости, содержащейся в последовательности в позиции, которую она представляет.