在開發一個較高性能需求的應用程序時,程序員會比較關注這些容器類的運行效率,表2.1列出了QList、QLinkedList和QVector容器的時間複雜度比較。java
QList<T>
是迄今爲止最經常使用的容器類,它存儲給定數據類型T的一列數值。
QList不只提供了能夠在列表進行追加的QList::append()和Qlist::prepend()函數,還提供了在列表中間完成插入操做的函數QList::insert()。程序員
QList<T>
維護了一個指針數組,該數組存儲的指針指向QList<T>
存儲的列表項的內容。
對於不一樣的數據類型,QList<T>
採起不一樣的存儲策略,存儲策略有如下幾種。數組
<T>
會將數值直接存儲在它的數組中。<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; }
QLinkedList<T>
是一個鏈式列表,它以非連續的內存塊保存數據。
QLinkedList<T>
不能使用下標,只能使用迭代器訪問它的數據項。函數
QVector<T>
在相鄰的內存中存儲給定數據類型T的一組數值。
QVector<T>
既能夠使用下標訪問數據項,也能夠使用迭代器訪問數據項。性能
Java風格的迭代器是Qt 4新加入的一個功能。 對於每個容器類,Qt都提供了兩種類型的Java風格迭代器數據類型,即只讀訪問和讀寫訪問,其分類見表2.2。指針
對於每個容器類,Qt都提供了兩種類型的STL風格迭代器數據類型:一種提供只讀訪問;另外一種提供讀寫訪問。STL風格迭代器的兩種分類見表2.3。code