Qt常用容器類(lèi)的使用
1.概述
Qt提供了多個(gè)基于模板的容器類(lèi),這些類(lèi)可以用于存儲(chǔ)指定類(lèi)型的數(shù)據(jù)項(xiàng),例如QStringList就是從QList<QString>繼承的,可以實(shí)現(xiàn)對(duì)字符串的增、刪等操作。
Qt的容器類(lèi)分為順序容器和關(guān)聯(lián)容器。
Qt的容器類(lèi)比STL更輕巧、安全和容易使用,并且還是線程安全的。
例:定義一個(gè)QList<QString> 容器
QList<QString> str;
str.append("A");
str.append("B");
str.append("C");
2.順序容器類(lèi)
Qt順序容器類(lèi)如下所示:
- QList
- QLinkedList
- QVector
- QStack
- QQueue
2.1QList
比較常用的容器類(lèi),以數(shù)組列表的形式實(shí)現(xiàn),在前、后添加數(shù)據(jù)非???。以下為常用方法。
插入:insert()
刪除:removeAt()
替換:replace()
移動(dòng):move()
添加:append()
2.2QLinkedList
是鏈?zhǔn)搅斜?,?shù)據(jù)項(xiàng)不是連續(xù)的內(nèi)存存儲(chǔ),基于迭代器訪問(wèn)數(shù)據(jù)項(xiàng),插入和刪除數(shù)據(jù)項(xiàng)操作時(shí)間相同
2.3QVector
提供動(dòng)態(tài)數(shù)組的功能,與QList接口基本相同,數(shù)據(jù)項(xiàng)是連續(xù)存儲(chǔ)的。
2.4QStack
類(lèi)似于堆棧,后入先出的特點(diǎn),push()和pop()用于數(shù)據(jù)進(jìn)出棧。
QStack<int> stack;
stack.push(1);
stack.push(2);
stack.push(3);
while(!stack.isEmpty())
stack.pop();
2.5QQueue
類(lèi)似于隊(duì)列,先入先出的特點(diǎn),enqueue()和dequeue()用于操作數(shù)據(jù)進(jìn)出隊(duì)列。
QQueue<int> queue;
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
while(!queue.isEmpty())
queue.dequeue();
3.關(guān)聯(lián)容器類(lèi)
關(guān)聯(lián)容器如下所示
- QMap
- QMultiMap
- QHash
- QMultiHash
- QSet
3.1QSet
基于散列表的集合模板類(lèi),存儲(chǔ)數(shù)據(jù)的順序不定,查找速度非常快。
3.2QMap
QMap存儲(chǔ)數(shù)據(jù)按照鍵的順序來(lái)存儲(chǔ)的,一個(gè)鍵映射一個(gè)值。
QMap<int,int> map;
map[1] = 1;
map[2] = 2;
map[3] = 3;
//或者使用insert
QMap<int,int> map;
map.insert(1,1);
map.insert(2,2);
map.insert(3,3);
查找
int num = map[1]; //或者 int num2 = map.value[2];
3.3QMultiMap
是QMap的子類(lèi),一個(gè)鍵可以對(duì)應(yīng)多個(gè)值。
QMultiMap<int,int> map;
map.insert(1,1);
map.insert(1,2);
//map.size() == 2
3.4QHash
基于散列表來(lái)實(shí)現(xiàn)的,查找速度非常快。
和QMap比較
- QHash查找速度更快
- QMap是按鍵順序排序的,QHash數(shù)據(jù)項(xiàng)任意排序
3.5QMultiHash
QMultiHash是QHash的子類(lèi),用于處理多值映射的類(lèi),與QMultiMap類(lèi)似。
到此這篇關(guān)于Qt常用容器類(lèi)的使用的文章就介紹到這了,更多相關(guān)Qt 容器類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
OpenGL實(shí)現(xiàn)中點(diǎn)劃線法
這篇文章主要為大家詳細(xì)介紹了OpenGL實(shí)現(xiàn)中點(diǎn)劃線法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
基于C中一個(gè)行壓縮圖的簡(jiǎn)單實(shí)現(xiàn)代碼
首先簡(jiǎn)單說(shuō)一下什么是行壓縮圖,其實(shí)嚴(yán)格意義上應(yīng)該是行壓縮矩陣2013-05-05
c++ 隊(duì)列相關(guān)知識(shí)總結(jié)
這篇文章主要介紹了c++ 隊(duì)列相關(guān)知識(shí)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下2021-03-03

