【问题标题】:Add Value To Hashmap From Pointer从指针向哈希图添加值
【发布时间】:2013-11-28 22:39:11
【问题描述】:

我正在尝试从我创建并存储到 void 指针中的哈希图中添加/删除值。但是,我用于添加值的代码似乎给了我这个错误: “Project1.exe 中 0x75B5C41F 处未处理的异常:Microsoft C++ 异常:内存位置 0x0027F7C0 处的 std::out_of_range。”

代码:http://pastebin.com/FPzz05rU 那么我在这里做错了什么,我该如何解决呢?

如果需要,可以提供更多信息。

【问题讨论】:

  • 索引超出范围,检查索引值
  • 感谢您的评论。但是我只有一个在这里创建的 hashmap:pastebin.com/mLtxn7J7 我尝试过的索引是 0 和 1,都失败了。
  • 我很确定那里的演员表是无效的,你通过使用它的结果来调用 UB。
  • 我尝试了很多方法都无济于事。那么我该如何解决未定义的行为呢?

标签: c++ pointers hashmap extend


【解决方案1】:

在这条线上,

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

您提供的键处没有向量,因此 hash_map::at 抛出 std::out_of_range 异常。与 hash_map::[] 不同,hash_map::at 不会在 map 中不存在新元素时创建它。

【讨论】:

  • 那么我该如何添加新元素呢?我已经尝试了很多东西,但仍然没有弄明白。
  • 您可以在代码中使用 hash_map::operator[] 代替 hash_map::at,如果可以在值不存在时自动插入该值,或者您可以使用 hash_map::在调用 StrVectorMap_AddValue 之前插入。
  • 啊,太棒了,使用 operator[] 效果很好!
猜你喜欢
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
相关资源
最近更新 更多