问题描述
让我们看看使用QMap迭代器的简单代码。
#include <QMap>
#include <QDebug>
int main()
{
QMap<int,QMap<int,int>> testA;
testA [0][0] = 1;
QMap<int,int>::iterator _iterTestA;
for(_iterTestA = testA[1].begin(); _iterTestA!= testA[1].end(); _iterTestA++){
qDebug()<<"Why am I working!? ";
}
qDebug()<<" testA " << testA;
}
预期行为
尝试将迭代器设置为QMap的不存在元素时,代码引发某种错误。
真实行为
Qt只是创建了一个内部带有空QMap()的元素testA [1]。
所以输出是:
testA QMap((0,QMap((0,1)))(1,QMap()))
发生了什么,为什么Qt为我做出决定?
解决方法
该行为已得到充分记录:
T &QMap::operator[](const Key &key)
返回与关联的值 密钥作为可修改的参考。如果地图不包含带有键的项,则该函数会插入一个 使用键key将默认构造的值放入地图,并返回一个 引用。如果地图包含多个带有钥匙的物品,则此 函数返回对最近插入值的引用。
(重点是我的)