typedef map, debug assertion on for loop, map/set incompatib

typedef map, debug assertion on for loop, map/set incompatible

本文关键字:map set incompatib loop on debug assertion typedef for      更新时间:2023-10-16

所以我在遇到调试断言时正在编码。现在我很想知道为什么这段代码不起作用:

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;
看起来

GetMeshes返回副本,您正在尝试将一个容器的iterator与另一个容器的iterator进行比较。对于 MSVC 中的已检查迭代器,这种比较是无效的。而且,多亏了@Mike西摩,根据C++标准,这种比较是无效的。