1. 程式人生 > >QT風格的STL迭代器使用

QT風格的STL迭代器使用

Qt提供了一組通用的基於模板的容器類。對比C++的標準模板庫中的容器類,Qt的這些容器更輕量、更安全並且更容易使用。

Qt的容器類在速度、記憶體消耗和內聯程式碼方面進行了優化。

儲存在Qt容器中的資料必須是可賦值的資料型別,這種資料型別必須提供一個預設的建構函式,一個複製建構函式,一個賦值

操作運算子。

QList類、QLinkedList類、QVector類:

容器類 查 找 插 入 頭部新增 尾部新增
QList O(1) O(n) Amort.O(1) Amort.O(1)
QLinkedList O(n) O(1) O(1) O(1)
QVector O(1) O(n) O(n) Amort.O(1)

QList類:

QList<T>是最常用的容器類,它儲存給定資料型別T的一列數值。繼承自QList的子類有: QItemSelection、QQueue、

QSignalSpy、QStringList、QTestEventList。

QList成員函式:

void QList::append(const QList<T>  &value)      //新增一個值到列表中

QList<string> list;
list.append("one");
list.append("two");
//list = {"one" "two"}

const T&QList :: at(int i)const    //返回列表中索引的位置

QList :: iterator QList :: begin()    //返回指向列表中的第一個元素

QList::const_iterator QList::cbegin() const      //返回指向列表中的第一個const STL風格迭代器

void QList :: clear()               //清空列表中所有元素

返回指向列表中第一個元素的const STL樣式迭代器

返回指向列表中最後一個元素之後的const STL樣式迭代器

const T&QList :: constFirst()const         //

返回對列表中第一個元素的const引用。列表不能為空

int QList :: count(const T&value)const        //返回列表中的出現次數

返回一個const STL樣式的反向迭代器,它以相反的順序指向列表中的第一個元素

bool QList :: empty()const             //它等效於isEmpty(),true如果列表為空則返回

void QList :: insert(int i,const T&value)       //在列表中的索引位置i處插入。如果i <= 0,則該值將新增到列表中。

QList<QString> list;
list << "alpha" << "beta" << "delta";
list.insert(2, "gamma");
// list: ["alpha", "beta", "gamma", "delta"]

void QList :: move(int from,int to)        //將索引位置的專案索引位置移動。 

QList<QString> list;
list << "A" << "B" << "C" << "D" << "E" << "F";
list.move(1, 4);
// list: ["A", "C", "D", "E", "B", "F"]

此處省略...

更多成員函式可以參考Qt文件。

QLinkedList類的使用:

QLinkedList<T> 是一個鏈式連結串列,它以非連續的記憶體塊儲存資料。

QLinkedList<T> 不能使用下標,只能使用迭代器訪問它的資料項。

QLinkeList成員函式:

參照QLIst成員函式,大多功能相似,也可以參考Qt文件,因為函式功能類似且比較多,不一一列舉了。

QVector類的使用:

QVector <T>是Qt的通用容器類之一。它將其元素儲存在相鄰的記憶體位置,並提供快速的基於索引的訪問。

QVector<int> number;        //建立一個儲存 int型別 QVector
QVector<QString> str;       //建立一個儲存 QString型別 QVector

QVector將其元素儲存在向量(陣列)中,

QVector<int> vector(200);    //初始化一個包含200個元素的vector

更多QVector的使用參考Qt文件,成員函式實在太多,偷一把懶了吧。QVector函式使用

關於Qt的更多使用後續會繼續更新...