簡體   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