Qt常用容器類的使用
1.概述
Qt提供了多個(gè)基于模板的容器類,這些類可以用于存儲(chǔ)指定類型的數(shù)據(jù)項(xiàng),例如QStringList就是從QList<QString>繼承的,可以實(shí)現(xiàn)對(duì)字符串的增、刪等操作。
Qt的容器類分為順序容器和關(guān)聯(lián)容器。
Qt的容器類比STL更輕巧、安全和容易使用,并且還是線程安全的。
例:定義一個(gè)QList<QString> 容器
QList<QString> str;
str.append("A");
str.append("B");
str.append("C");
2.順序容器類
Qt順序容器類如下所示:
- QList
- QLinkedList
- QVector
- QStack
- QQueue
2.1QList
比較常用的容器類,以數(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
類似于堆棧,后入先出的特點(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
類似于隊(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)容器類
關(guān)聯(lián)容器如下所示
- QMap
- QMultiMap
- QHash
- QMultiHash
- QSet
3.1QSet
基于散列表的集合模板類,存儲(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的子類,一個(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的子類,用于處理多值映射的類,與QMultiMap類似。
到此這篇關(guān)于Qt常用容器類的使用的文章就介紹到這了,更多相關(guān)Qt 容器類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows配置VSCode+CMake+Ninja+Boost.Test的C++開(kāi)發(fā)環(huán)境(教程詳解)
這篇文章主要介紹了Windows配置VSCode+CMake+Ninja+Boost.Test的C++開(kāi)發(fā)環(huán)境,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
C語(yǔ)言游戲必備:光標(biāo)定位與顏色設(shè)置的實(shí)現(xiàn)方法
本篇文章是對(duì)c語(yǔ)言中光標(biāo)定位與顏色設(shè)置的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++實(shí)現(xiàn)LeetCode(79.詞語(yǔ)搜索)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(79.詞語(yǔ)搜索),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息
這篇文章主要介紹了C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
詳解C++ 臨時(shí)量與臨時(shí)對(duì)象及程序的相關(guān)優(yōu)化
這篇文章主要介紹了C++ 臨時(shí)量與臨時(shí)對(duì)象及程序的相關(guān)優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

