Qt修炼手册8_常用的容器类QVector和QList
生活随笔
收集整理的這篇文章主要介紹了
Qt修炼手册8_常用的容器类QVector和QList
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.前言
Qt提供了非常有用的容器類的迭代器類,用于修改、刪除、插入和保存數據。本著學習的角度,重點研究了QVector和QList兩個類。 QT中,具有STL風格的迭代器具有兩種數據類型,分別是只讀訪問模式和讀寫訪問模式。具體見下表:STL風格的迭代器的運行方式是在數組中使用指針。例如,++運算符,*運算符用于返回迭代器的項。
2.QList類、QLinkedList類和QVector類
在開發一個較高性能需求的應用程序時,我們會比較關注這些容器類的運行效率,下表列出了QList、QLinkedList和QVector容器的時間復雜度比較。2.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 "stdafx.h" #include "QtCore\qdebug.h"int _tmain(int argc, _TCHAR* argv[]) {QList<QString> list;QString str = "I love Qt Programming!";list << str;qDebug()<<list[0]<<endl<<"How are you?"<<endl;return 0; }
2.2?QLinkedList類
QLinkedList<T>是一個鏈式列表,它以非連續的內存塊保存數據。QLinkedList<T>不能使用下標,只能使用迭代器訪問它的數據項。
2.3?QVector類
QVector<T>在相鄰的內存中存儲給定數據類型T的一組數值。QVector<T>既可以使用下標訪問數據項,也可以使用迭代器訪問數據項。 與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Qt修炼手册8_常用的容器类QVector和QList的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XPS文档阅读器
- 下一篇: 飞鸽传书 2010Beta2.0正式版预