我有一张有一堆整数,矢量和地图的地图。
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
我很欣赏这样做的最佳选择?
答案 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;