QT中的QList和QMap的一些簡單介紹

2021-10-09 07:53:20 字數 2738 閱讀 8977

qt中提供了多個序列容器和關聯容器,但在實際開發專案中使用較多的則是qlist和qmap,接下來就來簡單的對這2個類進行一些熟悉,為以後的學習使用打下基礎。

qlist是乙個陣列列表,它的優勢在於可以快速在頭部和尾部以及其他任意地方就進行資料的寫入刪除等操作。

//list的一些基本函式使用

qlistlist;

list.

("last");

//尾部寫入資料

list.

prepend

("head");

//頭部寫入資料

list.

insert(2

,"two");

//在下標為2的地方寫入資料two

list.

move(1

,3);

//將下標為1的值移動至下標為3的地方

list.

swap(1

,3);

//將下標為1的值和下標為3的值進行交換

list.

contains

("mm");

//list中是否包含『mm』這個值,包含返回true,不包含返回false

list.

count

("mm");

//list中值為mm的個數

list.

indexof

("mm");

//從0開始往前查詢值mm,找到返回下標值,預設不寫為從0開始

list.

indexof

("mm",1

);//從1開始往前查詢值mm,找到返回下標值

在對list進行遍歷輸出的時候,可以使用[下標值]的方式,也可以使用at()函式,at()函式的執行效率要比[下標值]的方式要快許多。

qmap是關聯性容器,採取的是鍵值對的儲存形式,乙個鍵對乙個值,或者乙個鍵對多個值。

//qmap

qmapint>map;

map[

"one"]=

1;//在map中插入乙個one鍵,對應的值為1

map.

insert

("three",3

);//使用insert進行鍵值對的資料插入

int value6 = map[

"six"];

//使用操作符時,如果map裡邊沒有相應的鍵,那麼系統會自動鍵鍵插入進行map中

qdebug()

<<

"value6"

<< value6;

qdebug()

<<

"contains:six?"

<< map.

comntains

("six");

int value7 = map.

value

("seven");

//使用value()函式,如果鍵不存在map中,系統會返回乙個0,但是不會自動將鍵新增進map

qdebug()

<<

"value7:"

<< value7;

qdebug()

<<

"contains seven?"

<< map.

contains

("seven");

int value9 =

map(

"nine",9

);//當鍵不存在map中時,缺省會自動返回0,但是也可以自行設定返回的數值

int value10 = map.

insert

("ten",1

);int value10 = map.

insert

("ten",2

);qdebug()

<<

"ten:"

<< map.

value

("ten");

//map預設情況下是一鍵對一值,如果重新給鍵賦值,那麼後賦值的值會將先賦值的值覆蓋掉

//map中如果想一鍵對多值,可以使用insertmulti()

map.

insertmulti

("two",2

);map.

insertmulti

("two",3

);qlist<

int>value2 = map.

value

("two");

qdebug()

<<

"two:"

<< value2;

//雖然可以使用insertmulti()函式設定一鍵多值,但一般情況下建議使用qmultimap類來進行設定

qmultimapint>map1,map2,map3;

map1.

insert

("one",1

);map.

insert

("one",2

);map2.

insert

("one",3

);map3 = map1 + map2;

//這裡的是字串的追加,不是資料值的相加

qlist<

int>qmap3;

qdebug()

<<

"qmap3:"

;for

(int i =

0; isize()

; i++

)

說的不好,望大家多多指點,我也多多學習。

qt之QHash和QMap的區別

qmap提供了乙個從類項為key的鍵到類項為t的值的對映,通常所儲存的資料型別是乙個鍵對應乙個值,並且按照key的次序儲存資料,這個類也支援一鍵多值,如 qmultimap qhash跟qmap基本上一致,但是它維護的是一張雜湊表,表的大小和資料項是自適應的,qhash是以任意的順序放置它的資料,這...

QT之QList的錯誤

記錄一下這次犯的錯誤 好氣哦,看了一天時間bug。男朋友一下子幫我解決,有個程式設計師男朋友還挺好 resourse label str list是個qstringlist型別的,存放的是我解析出來的資源重組之後的資料。具體看 for int i start i 解析出來之後為 天伺饋j 綜合測控基...

QT容器QList的contains用法使用限制

今天試圖用qt的容器qlist因為qlist在qt設計的時候,體積足夠小,是倡導使用的容器之一。但呼叫qlist但contains介面的時候,發現編譯失敗。繼續查原因,發現qlist的contains函式,容器裡承載的實體型別必須支援 操作符。比較坑的是,這個實體型別,恰好不支援 操作。於是整個ql...