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


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

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>存儲對象的指針,則該指針指向實際存儲的對象。

下面舉一個例子:

#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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM