LINUX.ORG.RU
Ответ на: комментарий от annoynymous

Счас приспособил этот hasPrevious()/previous(). А проход iterator-ом от end() к begin() вообще корректен? Нафик тогда в stl были введены эти reverse_iterator? Для красоты, что-ли?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от annoynymous

> for (i = list.end(); i != list.begin(); --i) {}

Если не делать специальных телодвижений, то такой цикл приведёт к обращению к несуществующему элементу *list.end() и не будет обращения к существующему *list.begin(). Тогда уж так:

for (i = list.end(); i-- != list.begin();) {}

Jini ★★
()
Ответ на: комментарий от one_more_hokum

> Нафик тогда в stl были введены эти reverse_iterator?

Так можно писать универсальные алгоритмы, в которых обращение к переданному итератору идёт через операцию ++. Передавая в них обычный итератор получаем обход в прямом направлении, reverse_iterator --- в обратном. Увы, лямбда-функций в нативном C++ нет и STL проектировался без их возможностей :(

Jini ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.