映射未按预期更新

时间:2018-03-30 16:15:31

标签: c++

我正在尝试更新地图,但在进行更改后它是空的。

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却没有?

1 个答案:

答案 0 :(得分:1)

在这行代码之后:

resourceConsumption()

auto cityMap = totalmap["city"]; 是该地图密钥值的副本。对cityMap所做的任何更改都不会反映在您的cityMap容器中。

解决此问题的一种方法是将totalmap 引用设为地图元素。

cityMap

请注意&符号。