Russian Qt Forum
Июнь 11, 2024, 11:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: (С++) Различия между ++i и --i  (Прочитано 3005 раз)
fisenkdima
Гость
« : Ноябрь 03, 2012, 15:50 »

В данный момент читаю книгу по Qt авторства Макса Шлее, наткнулся на следующее утверждение:

Код:
for (;it!=vec.begin();++it)
{
      qDebug()<<*it;
}

... при прохождении элементов в обратном порядке при помощи оператора -- необходимо помнить, что он не симметричен с прохождением при помощи оператора ++. Поэтому цикл должен в этом случае выглядеть следующим образом:
QVector<QString>::iterator it=vec.end();
Код:
for (;it!=vec.begin();)
{
      --it;
      qDebug()<<*it;
}
Вопрос же заключается в следующем:
Что мешает нам поместить --it в заголовок for (или как еще можно назвать круглые скобки после for)?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 03, 2012, 16:06 »

Что мешает нам поместить --it в заголовок for (или как еще можно назвать круглые скобки после for)?
Код
C++ (Qt)
for (;it!=vec.begin(); --it)
 
Просто неверно. Сначала проверяется условие, потом (если условие Ok) выполняется тело цикла, и только потом декремент.

Лучше заняться языком (вместо шлеев)  Улыбающийся
Записан
fisenkdima
Гость
« Ответ #2 : Ноябрь 03, 2012, 16:13 »

Благодарю за совет и за пояснение.
Я изучал синтаксис относительно недавно и почему-то не обратил внимание на порядок выполнения действий у оператора for -__-
Впредь буду внимательнее.
Записан
Anchorite
Гость
« Ответ #3 : Ноябрь 06, 2012, 15:28 »

Просто QVector::begin() и QVector::end() определяют полуоткрытый интервал.
QVector::end() "указывает" не на последний элемент вектора, а на элемент находящийся за ним.
Именно поэтому при прохождении элементов QVector в обратном порядке сначала необходимо произвести декремент итератора.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 19.