[現狀]
這發生在兩個QVector
和QList
這裏我使用後者作爲一個例子。Qt的容器(QVector,的QList)::端()返回不能被稱爲一個迭代
測試代碼:
QList<int> test;
for (int i=0; i<10; i++)
test.append(i);
// First
qDebug()<<"[First]";
qDebug()<<"Directly return:"<<test.first();
QList<int>::iterator itr_first = test.begin();
qDebug()<<"By iterator:"<<*itr_first;
// Last
qDebug()<<"[Last]";
qDebug()<<"Directly return:"<<test.last();
QList<int>::iterator itr_last = test.end();
qDebug()<<"By iterator:"<<*itr_last; //<--- ***No value can be referred from here***
itr_last = itr_last-1;
qDebug()<<"By iterator(modified):"<<*itr_last;
的輸出是:
[第一]
直接返回:0
通過迭代:0
[尾]
直接返回:9
通過迭代:-842150451
通過迭代器(修改):9
[問題]
QList::begin()
不同於其返回第一項的迭代器,我不明白爲什麼返回一個不可用的迭代器,其中cann不被提及。這對我來說是非常煩人的,並且使我的程序有時會出問題。
這是什麼原因?它與C++對話有什麼關係?
走遍列表請仔細閱讀了半開的範圍和離結束迭代器,後面'begin'的概念和'end'是到C++基礎(和好了,任何事情在編程中)。 – user657267
謝謝,我有點缺乏這個背景。 – Tay2510
@KubaOber我是OP,我認爲它也是重複的。我自己刪除它有意義嗎? – Tay2510