Форум программистов, компьютерный форум CyberForum.ru

Некорректная работа .find() для map - C++

Восстановить пароль Регистрация
 
Sterling
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 3
20.12.2010, 17:25     Некорректная работа .find() для map #1
Доброго времени суток.
Столкнулся с такой проблемой.

имеется:
std::map<int, CCF_sample*> intersect_map;

где CCF_sample это struct

При последовательном просмотре элементов в цикле, все значения корректны.
std::map<int, CCF_sample*>::iterator itt;
for(itt = intersect_map.begin(); itt!=intersect_map.end(); itt++)
itt->second-> корректные значения полей структур

Далее ищу конкретный элемент по значению ключа int ID;
std::map<int, CCF_sample*>::iterator it;
it = intersect_map.find(ID);

Для одного и того же значения ID сто раз все проходит на ура, а на сто первый раз
получаемая структура заполнена нулевыми (дефолтными) значениями.
При этом элемент map с данным ID существует и он не пустой.
В чем может быть проблема?
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
21.12.2010, 19:59     Некорректная работа .find() для map #2
А обращений к объекту map по индексу, типа
C++
1
intersect_map[0]
в вашем коде нет? При таких обращениях, если элемента с таким ключом нет, то он создается, но с пустым значением second.
Sterling
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 3
22.12.2010, 10:32  [ТС]     Некорректная работа .find() для map #3
Через оператор [ ] идет только формирование map в самом начале.
После этого проверял на корректность значений. Все ключи корректные. И значения по ключу тоже корректные.
Однако при поиске через .find() некоторое количество раз обращение происходит удачно, а в один прекрасный момент для того же значения ключа возвращается пустой элемент.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
22.12.2010, 12:05     Некорректная работа .find() для map #4
Цитата Сообщение от Sterling Посмотреть сообщение
Через оператор [ ] идет только формирование map в самом начале.
После этого проверял на корректность значений. Все ключи корректные. И значения по ключу тоже корректные.
Однако при поиске через .find() некоторое количество раз обращение происходит удачно, а в один прекрасный момент для того же значения ключа возвращается пустой элемент.
А что за компилятор, интересно?
Sterling
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 3
22.12.2010, 12:17  [ТС]     Некорректная работа .find() для map #5
gcc (GCC) 4.1.2
Yandex
Объявления
22.12.2010, 12:17     Некорректная работа .find() для map
Ответ Создать тему
Опции темы

Текущее время: 14:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru