Название: (С++) Различия между ++i и --i Отправлено: fisenkdima от Ноябрь 03, 2012, 15:50 В данный момент читаю книгу по Qt авторства Макса Шлее, наткнулся на следующее утверждение:
Код: for (;it!=vec.begin();++it) ... при прохождении элементов в обратном порядке при помощи оператора -- необходимо помнить, что он не симметричен с прохождением при помощи оператора ++. Поэтому цикл должен в этом случае выглядеть следующим образом: QVector<QString>::iterator it=vec.end(); Код: for (;it!=vec.begin();) Что мешает нам поместить --it в заголовок for (или как еще можно назвать круглые скобки после for)? Название: Re: (С++) Различия между ++i и --i Отправлено: Igors от Ноябрь 03, 2012, 16:06 Что мешает нам поместить --it в заголовок for (или как еще можно назвать круглые скобки после for)? Код Просто неверно. Сначала проверяется условие, потом (если условие Ok) выполняется тело цикла, и только потом декремент. Лучше заняться языком (вместо шлеев) :) Название: Re: (С++) Различия между ++i и --i Отправлено: fisenkdima от Ноябрь 03, 2012, 16:13 Благодарю за совет и за пояснение.
Я изучал синтаксис относительно недавно и почему-то не обратил внимание на порядок выполнения действий у оператора for -__- Впредь буду внимательнее. Название: Re: (С++) Различия между ++i и --i Отправлено: Anchorite от Ноябрь 06, 2012, 15:28 Просто QVector::begin() и QVector::end() определяют полуоткрытый интервал.
QVector::end() "указывает" не на последний элемент вектора, а на элемент находящийся за ним. Именно поэтому при прохождении элементов QVector в обратном порядке сначала необходимо произвести декремент итератора. |