2013-11-15 86 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