- 此问题在此处已有答案**:
Using char* as a key in std::map(10个答案)
Error trying to find const char* key from std::map(2个答案)
Using const char* as key for map/unordered_map(3个答案)
Pointers as keys in map C++ STL(5个答案)
2天前关闭。
我有一个简单的map
,它有const char*
键和bool
值,并且我有预先添加的键,但是当我试图用字符串修改值时,它会创建一个新条目,而不是编辑现有条目,并且我有相同的键名。
map<const char*, bool> test=
{
{"Test", false},
{"test2", false}
};
string s = "Test";
test[s.c_str()] = true;
给我Map测试
{"Test", false},
{"test2", false},
{"Test", false;}
1条答案
按热度按时间xfyts7mz1#
如果你真的想用C字符串作为键,你需要提供一个用户定义的比较器,否则Map将比较实际的指针值,而不是它们所指向的C字符串。
示例:
不过,我还是建议您使用
std::string
作为 * Key *。当前的
map
不能被使用,如果你存储指针的任何C字符串(不是字符串常量)已经超出了作用域。你存储的指针是"悬空的",解引用它们会使程序具有 * 未定义的行为 *。