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