让我们看看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只是创建了一个元素testA[1],里面有一个空的QMap((。
因此输出为:
testA QMap((0, QMap((0, 1)))(1, QMap()))
发生了什么,为什么Qt是我的决定?
该行为已被充分记录:
T &QMap::operator[](const Key &key)
返回与密钥作为可修改的引用。如果映射中不包含带键的项目,则函数会插入使用key键将默认构造的值添加到映射中,并返回引用它。如果映射包含多个带有key键的项目,则函数返回对最近插入的值的引用。
(强调矿(