我只是试图使用标准std::map
,我遇到了麻烦。我记得包含标题,这是我的声明:
std::map<const char *, UINT> boneList;
我已经填写了一些数据,但是当我尝试找到这样的值时:
std::cout << boneList.find("Bind_Spine1")->second;
但是,不是打印数字,而是在运行时弹出错误:“map / set iterator not derefernciable”。
但如果我这样做:
std::cout << boneList["Bind_Spine1"];
一切正常。当operator[]
不是时,为什么find()返回end()?我正在使用visual studio 13
答案 0 :(得分:2)
boneList["Bind_Spine1"]
会将一个项目添加到地图中。 boneList.find("Bind_Spine1")
不会这样做。
将地图中的密钥更改为std::string
。这应该解决问题。当您使用char const*
作为地图的关键时,一切都会让人感到困惑。在C / C ++中,如果你有
char const* ap = "abcd";
char const* bp = "abcd";
然后不保证a == b
。但是,如果您使用
std::string a = "abcd";
std::string b = "abcd";
然后保证a == b
。