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

Map/set!( iterator not dereferencable) - C++

Восстановить пароль Регистрация
 
vikinoise
Сообщений: n/a
25.04.2014, 00:08     Map/set!( iterator not dereferencable) #1
Есть функция,в которой происходит поиск в map по ключу. Если по данному ключу нет значения, то необходимо провести интерполяцию двух ближайших значений. Ошибка возникает на позиции 13.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 void DataFromFile::_SleprQuaternionVector(Data &data, const double& timeToInterpolate)
{
map<double, Data>::iterator it1,it2;
   
    if(_data.find(timeToInterpolate) !=_data.end())// Если что-нибудь нашли
    {
            data=(_data.find(timeToInterpolate)->second);
    }
     else
     {
         it1 = _data.upper_bound(timeToInterpolate);
         it2 = _data.lower_bound(timeToInterpolate);
         data.QuaternionJ200toCamera=Quaternion_slerp(it1->second.QuaternionJ200toCamera, it2->second.QuaternionJ200toCamera, ((timeToInterpolate - (it1->first))/ ((it2->first) - (it1->first))));
         data.QuaternionJ200toWGS84=Quaternion_slerp(it1->second.QuaternionJ200toWGS84,it2->second.QuaternionJ200toWGS84, ((timeToInterpolate - (it1->first))/ ((it2->first) - (it1->first))));
         data.PosInJ200=VectorInterlolation(it1->second.PosInJ200,it2->second.PosInJ200,(timeToInterpolate - (it1->first))/ (it2->first - it1->first));
     }
}
Подскажите в чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2014, 00:08     Map/set!( iterator not dereferencable)
Посмотрите здесь:

C++ Tree, set, map etc.
C++ map/set iterator not dereferencable
C++ deque iterator not dereferencable
Ошибка в роботе с контейнером: set iterator not incrementable C++
Map iterator обращение к предыдущему или последующему элементу C++
C++ Map/set iterator not dereferencable
C++ Map/set iterator not dereferencable
C++ Ошибка list iterator not dereferencable

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
25.04.2014, 00:17     Map/set!( iterator not dereferencable) #2
vikinoise, или upper_bound или lower_bound возвращают end(). iterator not dereferencable - это про разыменование end() итератора.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
25.04.2014, 09:59     Map/set!( iterator not dereferencable) #3
Цитата Сообщение от vikinoise Посмотреть сообщение
C++
1
if(_data.find(timeToInterpolate) !=_data.end())// Если что-нибудь нашли { data=(_data.find(timeToInterpolate)->second); }
C++
1
2
3
4
5
_data::iterator Iter = _data.find(timeToInterpolate);//итератор заведите, чтобы 2 раза поиск не делать.._data::iterator - псевдокод
if(Iter != _data.end())
{
data=Iter->second; 
}
так просто оптимизация
Yandex
Объявления
25.04.2014, 09:59     Map/set!( iterator not dereferencable)
Ответ Создать тему
Опции темы

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