Qt修炼手册8_常用的容器类QVector和QList
生活随笔
收集整理的這篇文章主要介紹了
Qt修炼手册8_常用的容器类QVector和QList
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.前言
Qt提供了非常有用的容器類的迭代器類,用于修改、刪除、插入和保存數(shù)據(jù)。本著學(xué)習的角度,重點研究了QVector和QList兩個類。 QT中,具有STL風格的迭代器具有兩種數(shù)據(jù)類型,分別是只讀訪問模式和讀寫訪問模式。具體見下表:STL風格的迭代器的運行方式是在數(shù)組中使用指針。例如,++運算符,*運算符用于返回迭代器的項。
2.QList類、QLinkedList類和QVector類
在開發(fā)一個較高性能需求的應(yīng)用程序時,我們會比較關(guān)注這些容器類的運行效率,下表列出了QList、QLinkedList和QVector容器的時間復(fù)雜度比較。2.1 QList類
QList<T>是迄今為止最常用的容器類,它存儲給定數(shù)據(jù)類型T的一列數(shù)值。QList不僅提供了可以在列表進行追加的QList::append()和QList::prepend()函數(shù),還提供了在列表中間完成插入操作的函數(shù)QList::insert()。
QList<T>維護了一個指針數(shù)組,該數(shù)組存儲的指針指向QList<T>存儲的列表項的內(nèi)容。
對于不同的數(shù)據(jù)類型,QList<T>采取不同的存儲策略,存儲策略有以下幾種。
(1)如果T是一個指針類型或指針大小的基本類型(即該基本類型占有的字節(jié)數(shù)和指針類型占有的字節(jié)數(shù)相同),QList<T>會將數(shù)值直接存儲在它的數(shù)組中。
(2)如果QList<T>存儲對象的指針,則該指針指向?qū)嶋H存儲的對象。
下面舉一個例子:
#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>是一個鏈式列表,它以非連續(xù)的內(nèi)存塊保存數(shù)據(jù)。QLinkedList<T>不能使用下標,只能使用迭代器訪問它的數(shù)據(jù)項。
2.3?QVector類
QVector<T>在相鄰的內(nèi)存中存儲給定數(shù)據(jù)類型T的一組數(shù)值。QVector<T>既可以使用下標訪問數(shù)據(jù)項,也可以使用迭代器訪問數(shù)據(jù)項。 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Qt修炼手册8_常用的容器类QVector和QList的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XPS文档阅读器
- 下一篇: 飞鸽传书 2010Beta2.0正式版预