2013-11-15 3 views
0

Я пытаюсь добавить/удалить значения из созданного и помещенного в hhhmap-указателя. Однако код, который у меня есть для добавления значений, кажется, дает мне эту ошибку: «Необработанное исключение в 0x75B5C41F в Project1.exe: исключение Microsoft C++: std :: out_of_range в ячейке памяти 0x0027F7C0».Добавить значение To Hashmap From Pointer

Код: http://pastebin.com/FPzz05rU Так что же я сделал здесь неправильно и как его исправить?

При необходимости может быть предоставлена ​​дополнительная информация.

+0

индекс за пределами допустимого диапазона, проверьте значение индекса – Matt

+0

Спасибо за комментарий. Однако у меня есть только один hashmap, который создается здесь: http://pastebin.com/mLtxn7J7 Индексы, которые я пробовал, равны 0 и 1, оба не работают. – FatalSleep

+0

Я уверен, что приведение недействительно там, и вы вызываете UB, используя его результат. – PlasmaHH

ответ

1

На этой линии

map->at(key).push_back(value); 

нет вектора на ключ, который вы предоставляете, так hash_map :: на бросает зЬй :: out_of_range исключение. В отличие от hash_map :: [], hash_map :: at не создает новый элемент на карте, если он еще не существует.

+0

Итак, как я мог бы добавить новый элемент? Я пробовал много вещей и до сих пор не понял. – FatalSleep

+0

Вы можете использовать hash_map :: operator [] вместо hash_map :: at в вашем коде, если это нормально, чтобы автоматически вставить значение, когда оно не существует, или вы можете использовать hash_map :: insert перед вызовом StrVectorMap_AddValue. – Nox

+0

Ах, что скалы, используя оператора [], отлично работали! – FatalSleep