C++ - 将数据插入 map 循环的 map

标签 c++ maps

在 map 循环中,插入数据的正确方法是什么?

在我的代码中的第一个时刻,我在一个函数中将一些数据插入到我的 map map 中,就像这样(它的工作很好):

outMap[TYPE_REQ_USER][req->number] = req;

在此之后我的 map 大小为 1。

在第二个时刻,在其他函数中,我需要迭代 map ,如果我找到键 TYPE_REQ_USER 我需要向 map 的 map 添加新数据。我这样尝试,但在此之后我打印了 map 大小,我们说它是 1 而不是 2(预期的)

我的 map 循环插入数据的 map :

 for (outMap_t::iterator itOutMap = outMap.begin(); itOutMap != outMap.end(); ++ itOutMap)
 {
      for (intMap_t::iterator itInMap = itOutMap->second.begin(); itInMap != itOutMap->second.end(); ++itInMap)
      {
        if (itOutMap->first == TYPE_REQ_USER)
        {
          //map insert
          outMap[TYPE_REQ_USER][req->number] = req;
        }
      }
 }

那么我的循环插入有什么问题呢?

编辑 2

所以现在对于同一个键(TYPE_REQ_USER)我可以有两个不同的元素。

所以知道当我尝试迭代映射并删除我遇到段错误的键的元素时,因为在第一次迭代中我做了:

qnRunningType_JobId.erase(itOutMap);

但是在第二次迭代中我遇到了 sementation 错误,因为我试图删除 itOutMap 但我们已经在第一次迭代中删除了..

最佳答案

(评论转换为完整性答案)

使用 std::map,插入一个已经存在的项目将覆盖现有的项目。您可以使用 std::map::insert 并检查返回对的第二项来检查您是否覆盖了一项,如 here 所述。 .

关于C++ - 将数据插入 map 循环的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193980/

相关文章:

c++ - 从基类转换为派生类

c++ - struct 中的默认值和构造函数顺序

c++ - Qt4.8中使用C创建新线程

r - 格子 levelplot 或 ggplot2 map R 的自定义图例

javascript - 传单缩放无缘无故无法工作

c++ - 谷歌地址更正

python - 如何使用 Python 访问属于对象的动态 C++ 数组变量?

c++ - 如何从输入文件输出十六进制数据

html - 将自定义全屏谷歌地图嵌入网页

maps - 传单.js : set max zoom level per layer?