我正在尝试更新地图,但在进行更改后它是空的。
typedef string Location;
typedef string Person;
typedef vector<string> Objects;
// this map is not behaving right
map<Location, map<Person, Objects>> totalmap;
// Add stuff to map
auto cityMap = totalmap["city"];
cityMap["Ed"] = Objects();
cityMap["Ed"].push_back("toothbrush");
// Check map
cityMap.size() // 1 (as expected)
totalmap["city"]["Ed"].size(); // 0 (where did it go?)
为什么cityMap
会显示更改,totalmap
却没有?
答案 0 :(得分:1)
在这行代码之后:
resourceConsumption()
auto cityMap = totalmap["city"];
是该地图密钥值的副本。对cityMap
所做的任何更改都不会反映在您的cityMap
容器中。
解决此问题的一种方法是将totalmap
引用设为地图元素。
cityMap
请注意&符号。