QT(1)Java型別迭代器實現QList只讀遍歷
阿新 • • 發佈:2018-12-26
java風格迭代器:
例如:
QList<T>容器:
只讀迭代器類:QListIterator<T>
讀寫迭代器:QMutableListIterator<T>
QLinkedList<T>容器:
只讀迭代器:QLinkedList<T>
讀寫迭代器:QMutableLinkedList<T>
QVector<T>容器:
只讀迭代器:QVectorIterator<T>
讀寫迭代器:QMutableVectorIterator<T>
例項程式碼如下:
#include <QCoreApplication>
#include <QDebug> //包含了QList標頭檔案
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
/*
QT的一些類,如QString、QList等,不需要QCoreApplication的支援也能夠工作,
但是,在使用Qt編寫應用程式時,如果是控制檯程式,則建議初始化一個QCoreApplication物件,
Qt5.8建立控制檯時自動生成的main.cpp檔案預設建立了一個QCoreApplication物件;
如果是GUI影象使用者介面程式,則main.cpp則會預設初始化一個QApplication物件
*/
QList<int> list; //建立一個QList<int>棧物件list
list << 1 << 2 << 3 << 4 << 5; //使用操作運算子<<輸入資料
QListIterator<int> i(list);
/*
以list為引數初始化一個QListIterator物件i,此時,迭代點處在列表項1的前面,此時並不是只想該列表項
*/
for(; i.hasNext();)
qDebug() << i.next();
/*
hasNext()函式檢查迭代點之後是否還有 列表項,如果有,則呼叫QListIterator<T>::next()函式進行遍歷
*/
return a.exec();
}
執行結果如下:
在C++STL中,list容器模板定義在list標頭檔案中,是T型別物件的雙向連結串列。list容器具有一些vector和deque容器所不具備的優勢,它可以在常規時間內,在序列已知的任何位置插入和刪除元素,也就是說不能索引元素。為了訪問list內部的一個元素,必須一個一個地遍歷元素,通常從第一個元素或最後一個元素開始遍歷。