调试断言失败映射/设置迭代器不可取消引用

Debug Assertion Failed map/set iterator not dereferencable

本文关键字:迭代器 不可取 可取消 引用 设置 断言 失败 映射 调试      更新时间:2023-10-16

我有我的地图std::map<const char*, int> uniforms;当我尝试使用uniforms.find(name)->second我得到了错误说明。我已经检查了存储在调试模式下的数据,所有数据都如我所期望的那样正确,我可以使用find函数访问其中的大部分数据,但当我尝试访问directionalLight.base.color时,我收到了错误。就像我说的,它们拼写正确,处于调试模式,但我得到了错误。是绳子上的点吗?

您可能已经过了映射的末尾,所以在取消引用之前,您应该检查它的是否有效

auto it = uniforms.find(name) ; // or std::map<const char*, int>::iterator it ;
if ( it != uniforms.end() )
{
   // Now use  it->second 
}