Qt容器類——1. QList類、QLinkedList類和QVector類

在開發一個較高性能需求的應用程序時,程序員會比較關注這些容器類的運行效率,表2.1列出了QList、QLinkedList和QVector容器的時間複雜度比較。java

1.QList類

QList<T>是迄今爲止最經常使用的容器類,它存儲給定數據類型T的一列數值。
QList不只提供了能夠在列表進行追加的QList::append()和Qlist::prepend()函數,還提供了在列表中間完成插入操做的函數QList::insert()。程序員

QList<T>維護了一個指針數組,該數組存儲的指針指向QList<T>存儲的列表項的內容。
對於不一樣的數據類型,QList<T>採起不一樣的存儲策略,存儲策略有如下幾種。數組

  • (1)若是T是一個指針類型或指針大小的基本類型(即該基本類型佔有的字節數和指針類型佔有的字節數相同),QList<T>會將數值直接存儲在它的數組中。
  • (2)若是QList<T>存儲對象的指針,則該指針指向實際存儲的對象。

下面舉一個例子:app

#include <QDebug> 
int main(int argc,char *argv[])  
{   
QList<QString> list;
{   
QString str("This is a test string");   
list<<str;   
}   
qDebug()<<list[0]<< "How are you! ";   
return 0;  
 }
2.QLinkedList類

QLinkedList<T>是一個鏈式列表,它以非連續的內存塊保存數據。
QLinkedList<T>不能使用下標,只能使用迭代器訪問它的數據項。函數

3.QVector類

QVector<T>在相鄰的內存中存儲給定數據類型T的一組數值。
QVector<T>既能夠使用下標訪問數據項,也能夠使用迭代器訪問數據項。性能

4.Java風格迭代器遍歷容器

Java風格的迭代器是Qt 4新加入的一個功能。 對於每個容器類,Qt都提供了兩種類型的Java風格迭代器數據類型,即只讀訪問和讀寫訪問,其分類見表2.2。指針

5.STL風格迭代器遍歷容器

對於每個容器類,Qt都提供了兩種類型的STL風格迭代器數據類型:一種提供只讀訪問;另外一種提供讀寫訪問。STL風格迭代器的兩種分類見表2.3。code

相關文章
相關標籤/搜索