2013-11-15 45 views
0

我想從我創建並存儲到一個空指針的散列表中添加/刪除值。然而,我添加值的代碼似乎給我這個錯誤: 「在Project1.exe 0x75B5C41F未處理的異常:Microsoft C++異常:在內存位置0x0027F7C0 std :: out_of_range。」從指針添加值到散列圖

此代碼: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 ::在拋出一個std :: out_of_range例外。與hash_map :: []不同,hash_map :: at不會在映射中創建新元素(如果它尚不存在)。

+0

那麼如何才能添加新元素?我已經嘗試了很多東西,但仍然沒有弄明白。 – FatalSleep

+0

如果可以在不存在時自動插入值,或者可以在調用StrVectorMap_AddValue之前使用hash_map :: insert,則可以在代碼中使用hash_map :: operator []代替hash_map :: at。 – Nox

+0

啊,那岩石,使用操作符[]完美地工作! – FatalSleep