如何解决Qt C ++中的QMapbegin函数的明显行为
让我们看看使用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将默认构造的值放入地图,并返回一个 引用。如果地图包含多个带有钥匙的物品,则此 函数返回对最近插入值的引用。
(重点是我的)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。