C++ - 将数据插入到地图循环的地图中

C++ - Insert data into map of map loop

本文关键字:地图 循环 插入 数据 C++      更新时间:2023-10-16

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

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

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

在此之后,我的地图大小为1。

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

我的地图循环地图插入数据:

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(;

但是在第二次迭代中,我遇到了语义错误错误,因为我正在尝试删除itOutMap但我们已经在第一次迭代中删除了。

(注释转换为答案以保持完整性(

使用std::map,插入已存在的项将覆盖现有项。可以通过使用std::map::insert并检查返回对的第二个项目来检查是否已覆盖项目,如此处所述。