在我的程序中,我有一个带有字符串键和列表(用户定义的类)值的映射,定义如下:
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:我看到每次调用函数后字典中的值都会增加.这可能与[]运营商有关吗?
地图中的关键是指针值,而不是其内容.因此奇怪的行为.更改地图,使其键为std::string.此外,您还修改了存储列表的副本.要避免这种情况,请使用参考
list<Show>& ls = map[index]
Run Code Online (Sandbox Code Playgroud)