Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> stl, переменной не присваивается значение в pair, почему? 
V
    Опции темы
Arks
  Дата 9.1.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.5.2006
Где: Барнаул

Репутация: нет
Всего: нет



Код

// first argument is a number of a vertex; the second one is a number of a parent
typedef std::vector<std::pair<int,int> > spath;
. . .
int n, nsh;
. . .
spath::reverse_iterator i1 = Path.rbegin(); i1++;
while(i1->second !=-1)
{
  n = i1->second;
 . . .


Через watches просматриваю 'i1->second' (i1 -> current -> std::vector<std::pair<int,int>,...> -> _Myptr -> second). Пишет == 1.
'n' же после присваивания == 2.
PM MAIL ICQ Skype MSN   Вверх
Daevaorn
Дата 9.1.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Arks @  9.1.2007,  14:10 Найти цитируемый пост)
Через watches 

это твоя роковая ошибка. доверяй, но проверяйsmile
PM MAIL WWW   Вверх
Arks
Дата 9.1.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.5.2006
Где: Барнаул

Репутация: нет
Всего: нет



И что ты предлагаешь? Как проблему то решать?
PM MAIL ICQ Skype MSN   Вверх
Daevaorn
Дата 9.1.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Arks @  9.1.2007,  14:16 Найти цитируемый пост)
И что ты предлагаешь? 

не доверять watch
Цитата(Arks @  9.1.2007,  14:16 Найти цитируемый пост)
Как проблему то решать? 

а где проблема?
PM MAIL WWW   Вверх
Arks
Дата 9.1.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.5.2006
Где: Барнаул

Репутация: нет
Всего: нет



Цитата(Daevaorn @ 9.1.2007,  13:19)
а где проблема?

Если не доверять Watch, то встаёт вопрос каким образом вообще этот весь stl отлаживать???
Связался же с ним на свою голову...  smile 
PM MAIL ICQ Skype MSN   Вверх
Daevaorn
Дата 9.1.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Arks @  9.1.2007,  14:22 Найти цитируемый пост)
то встаёт вопрос каким образом вообще этот весь stl отлаживать

st тут совсем не причем, и отлаживать её не нужно.
Отлаживать нужно свой код, а для этого вполне подойдет логирование и autos/locals
PM MAIL WWW   Вверх
Earnest
Дата 10.1.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Да не пудрите человеку мозги. Реверс-итератор чаще всего реализуется через прямой итератор на следующий элемент (current). Это нормально. А при разыменовании это учитывается. Так что просто убери i1++ перед циклом.
rbegin указывает за конец последовательности, но разыменуется в последний элемент. 

Это сообщение отредактировал(а) Earnest - 10.1.2007, 20:56


--------------------
...
PM   Вверх
Arks
Дата 10.1.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.5.2006
Где: Барнаул

Репутация: нет
Всего: нет



Хех... В том то и дело, что я поставил i1++, так как значение, что было по этому итератору было откровенной блажью (по крайней мере, то что я наблюдал в watchers)- не добавлял я такого значения... Или... Т.е. то что в watchers я наблюдаю, как "i1 -> current -> std::vector<std::pair<int,int>,...> -> _Myptr -> ... ", в программе не будет использовано, а будет использовано значение следующего итератора? Так чтоли?
PM MAIL ICQ Skype MSN   Вверх
Earnest
Дата 12.1.2007, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Я же о том и говорю: current показывает на следующий элемент! В случае rbegin - за конец последовательности. Watch тебе не поможет, т.к. при разыменовании будет взят предыдущий элемент. Ну так устроены обратные итераторы.


--------------------
...
PM   Вверх
PoloS
Дата 12.1.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 29.12.2006
Где: МО, г. Одинцово

Репутация: 1
Всего: 5



Пользуйся отладочной печатью
PM MAIL ICQ   Вверх
Arks
Дата 12.1.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.5.2006
Где: Барнаул

Репутация: нет
Всего: нет



Earnest, спасибо. Всё понял.
PM MAIL ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.