ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Category:

C++: обратный проход списка в STL

На стр.717-718 учебника Лафоре рассказывается об обратных итераторах.

Глава 15 «Стандартная библиотека шаблонов (STL)»,
раздел «Специализированные итераторы» / подраздел «Адаптеры итераторов» / подподраздел «Обратные итераторы», цитата:

Допустим, вам нужно производить итерацию по контейнеру в обратном порядке, от конца к началу. Вы можете попробовать написать такой текст:

list<int>::iterator iter;     // обычный итератор
iter = iList.end();           // начать в конце
while (iter != iList.begin()) // перейти в начало
    cout << *iter-- << ' ';   // декрементировать итератор

К сожалению, это работать не будет (прежде всего, у вас получится некорректный диапазон: от n до 1, а не от n-1 до 0).

Для осуществления реверсного прохода контейнеров используются обратные итераторы.


Думается, это какое-то неубедительное обоснование необходимости обратных итераторов. В приведенном коде достаточно поменять постфиксный декремент на префиксный и всё прекрасно будет работать, я проверил:
    cout << *--iter << ' ';   // декрементировать итератор

У читателя после этого пассажа может создаться впечатление (у меня создалось), что обычный итератор нельзя использовать для обратного прохода списка. После этого, в 3-м упражнении к этой главе (стр.750), автор выдает задание, в котором требуется именно организовать обратный проход списка в цикле с помощью обычного итератора.

В итоге пока так и непонятно, зачем нужны обратные итераторы, если для обратного прохода контейнера можно использовать и обычные...
Tags: Образование, Программирование
Subscribe

Recent Posts from This Journal

  • Юмор на ютубе, появление шоу TALK

    У меня в принципе нет в квартире телевизора. Я, в общем-то, не считаю телезрителей быдлом, а телевизор — устройством для промывки мозгов. Просто в…

  • JavaScript: Blob

    Прочел подраздел 2.3 « Blob» третьей части учебника по JavaScript. Для меня эта статья оказалась настолько объемной в плане нового, что ее разбор…

  • Сказка про двоичные данные, кодировку Windows-1251 и Юникод

    Вопрос из комментариев к подразделу 2.3 « Blob» третьей части учебника по JavaScript, цитата: Не могу найти способ выдавать файл с кодировкой…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments