c++ - 从列表映射中检索问题

标签 c++ std

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

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/

相关文章:

c++ - 是否可以假定具有未定义行为的分支无法访问并将其优化为死代码?

c++ - 如何在 MS visual studio 调试器中查看 DOMString(来自 apache xerces 库)?

c++ - 标准库对象作为返回类型和函数参数

c++ - 在包含 std::string 的函数上使用 throw() 后缀是否安全?

c++ - std::map 的 emplace() 如何避免过早构造?

c++ - 安全删除窗口子类化?

c++ - 重载 >> 继承类的运算符

c++ - 我可以在另一个 .hpp 文件中包含多个 .hpp 文件吗?

c++ - 自定义容器迭代器是否保证 ADL 考虑命名空间标准?

c++ - 将 std::set 传递给 C++ 中的方法