std:map iterator在find上返回badptr
我把我的
std::map
定义为
typedef std::map<string,ImageData*> ImageDataMap;
typedef std::pair<string,ImageData*> ImageDataPair;
typedef std::map<string,ImageData*>::iterator ImageDataIterator;
上述地图存储作为图像文件名的字符串和作为图像元数据的ImageData
。当我使用find如下所示
ImageDataIterator iter = imageMap->find("Fader.tga");
if(iter == imageMap->end()){...}
iter->first
是一个badptr,因此它失败了下面的if条件。这有什么不对?在xp64上运行vc9 express版(程序是32位)
没有找到相关结果
已邀请:
2 个回复
亥套惟间连
返回
表示在容器中找不到指定的键。您不能取消引用它来访问其元素。它会使你的应用程序崩溃。 编辑: 我们要清楚。问题是你正在反转逻辑,好吗?如果迭代器有效,则只能使用它,因此
必须与
不同。这意味着
成功并找到了您正在寻找的元素:
你的错误是你正在做的比较:
这意味着如果我搜索的元素不在地图中,则执行以下代码块。这就是为什么当执行
应用程序中断时。
苏髓骗撩
到