从列表地图中检索问题

dkb*_*dkb 3 c++ std

在我的程序中,我有一个带有字符串键和列表(用户定义的类)值的映射,定义如下:

std::map<const char*, std::list<Show>> _shows;
Run Code Online (Sandbox Code Playgroud)

我有一个添加到特定列表的函数,如下所示:

void Add(Show s, const char* index) {
list<Show> lshow = _shows[index];
lshow.push_back(s); }
Run Code Online (Sandbox Code Playgroud)

但是,每次使用相同的索引调用函数,而不是返回相同的列表时,我会得到一个空列表.

我究竟做错了什么?

ETA:我看到每次调用函数后字典中的值都会增加.这可能与[]运营商有关吗?

Arm*_*yan 6

地图中的关键是指针值,而不是其内容.因此奇怪的行为.更改地图,使其键为std::string.此外,您还修改了存储列表的副本.要避免这种情况,请使用参考

list<Show>& ls = map[index]
Run Code Online (Sandbox Code Playgroud)