C++ 映射未按预期更新

C++ 映射未按预期更新,c++,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["cit

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

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?)
typedef字符串位置;
typedef字符串人;
typedef矢量对象;
//这张地图不正确
地图总地图;
//向地图添加内容
自动城市地图=总地图[“城市”];
城市地图[“Ed”]=Objects();
城市地图[“Ed”]。向后推(“牙刷”);
//核对地图
cityMap.size()//1(如预期)
totalmap[“城市”][“教育”].size();//0(它去了哪里?)

为什么
cityMap
显示更改,而
totalmap
不显示更改?

在这行代码之后:

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

解决此问题的一种方法是将
cityMap
a引用到map元素

auto& cityMap = totalmap["city"];

注意符号。

这个问题出了什么问题?下一次如何改进我的问题?后编译代码。不需要那些
typedef
。它们只模糊了代码的其余部分。
“Ed”
“Ed”
不一致可能是这个问题的答案。抱歉,这是打字错误