[英]Unobvious behavior of the QMap().begin() function in Qt C++
让我们看一下带有 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 的项目,则此函数返回对最近插入的值的引用。
(强调我的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.