繁体   English   中英

Qt C++ 中 QMap().begin() 函数的不明显行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM