在我的程序中,我有一个带有字符串键和(用户定义类的)值列表的映射,定义如下:
std::map<const char*, std::list<Show>> _shows;
我有一个添加到特定列表的函数,如下所示:
void Add(Show s, const char* index) {
list<Show> lshow = _shows[index];
lshow.push_back(s); }
但是,每次使用相同的索引调用该函数时,我得到的不是返回相同的列表,而是一个空列表。
我做错了什么?
预计到达时间:我发现每次调用该函数后字典中的值数量都会增加。这可能与 [] 运算符相关吗?
最佳答案
map 中的键是指针值,而不是其内容。因此行为怪异。更改映射,使其键为 std::string
。此外,您还修改了存储列表的拷贝。为避免这种情况,请使用引用
list<Show>& ls = map[index]
关于c++ - 从列表映射中检索问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123964/