typedef map,on loop上的debug assertion,map / set不兼容

时间:2013-11-05 09:20:30

标签: c++ debugging iterator stdmap assertion

所以当我遇到Debug断言时,我正在编码。 现在我非常感兴趣为什么这段代码不起作用:

for(Model::MeshMap::iterator it = obj1->GetMeshes().begin(); it != obj1->GetMeshes().end(); it++)

这段代码确实:

Model::MeshMap obj1meshes = obj1->GetMeshes();
for(Model::MeshMap::iterator it = obj1meshes.begin(); it != obj1meshes.end(); it++)

在模型类中我有这个:

typedef std::map<std::string, Mesh*> MeshMap;

1 个答案:

答案 0 :(得分:2)

看起来GetMeshes会返回副本,并且您尝试将一个容器的iterator与另一个容器的iterator进行比较。这种比较在MSVC中检查的迭代器方面无效。而且,感谢@Mike Seymour,根据C ++标准,这种比较是无效的。