1. 程式人生 > >QT(1)Java型別迭代器實現QList只讀遍歷

QT(1)Java型別迭代器實現QList只讀遍歷

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內部的一個元素,必須一個一個地遍歷元素,通常從第一個元素或最後一個元素開始遍歷。