如何在C ++中更新地图的对象

时间:2014-04-09 19:26:34

标签: c++ c++11

我有一张有一堆整数,矢量和地图的地图。

class testMap
{
    int var1;
    int var2;
    ........
    .......
    int var50; //variables up to 50
    map  objmap;
    int *ptr
    vector<myClass> vecObj; //vector of myClass objects
}
typedef std::map<string , testMap> eeMap; //global map
eeMap tMap;

假设我创建了使用map insert tMap.insert(make_pair(&#34; test&#34;,* ptrTestMap))添加一个条目;如何通过函数更新此全局映射中的对象。

此新对象可能只更改了一个变量,也可能是多个。

void UpdateTestMap(testMap newTestMapValue,string key)
{

// enter code here

}

Option#1: Have a overloaded assignment operator 
Option#2 Compare the members one by one and overwrite the variables that are changed.
Option#3 Erase the key and insert it again with the same key and the new object.
##Any other option

我很欣赏这样做的最佳选择?

2 个答案:

答案 0 :(得分:1)

问题就在于你似乎不想改变密钥,所以它非常简单

void UpdateTestMap(testMap& newTestMapValue,string key)
{
     //tMap.erase(key); - as per the comment below this is not needed

     tMap[key] = newTestMapValue;

}

看似简单,做你想要的事情

答案 1 :(得分:1)

在此代码中,&#34; tMap &#34;是一种类型而不是实例。您无法使用&#34; tMap.insert &#34;添加。 首先像这样声明全局地图:

tMap globalMap;

然后使用以下内容添加值:

globalMap.insert(make_pair ("test", *ptrTestMap ) );

使用[] std :: map operator更改值:

globalMap[key] = newMapValue;