日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Qt常用容器類的使用_C 語言

作者:Mr.codeee ? 更新時間: 2022-08-18 編程語言

1.概述

Qt提供了多個基于模板的容器類,這些類可以用于存儲指定類型的數據項,例如QStringList就是從QList<QString>繼承的,可以實現對字符串的增、刪等操作。

Qt的容器類分為順序容器和關聯容器。

Qt的容器類比STL更輕巧、安全和容易使用,并且還是線程安全的。

例:定義一個QList<QString> 容器

    QList<QString> str;
    str.append("A");
    str.append("B");
    str.append("C");

2.順序容器類

Qt順序容器類如下所示:

  • QList
  • QLinkedList
  • QVector
  • QStack
  • QQueue

2.1QList

比較常用的容器類,以數組列表的形式實現,在前、后添加數據非常快。以下為常用方法。

插入:insert()

刪除:removeAt()

替換:replace()

移動:move()

添加:append()

2.2QLinkedList

是鏈式列表,數據項不是連續的內存存儲,基于迭代器訪問數據項,插入和刪除數據項操作時間相同

2.3QVector

提供動態數組的功能,與QList接口基本相同,數據項是連續存儲的。

2.4QStack

類似于堆棧,后入先出的特點,push()和pop()用于數據進出棧。

    QStack<int> stack;
    stack.push(1);
    stack.push(2);
    stack.push(3);
 
    while(!stack.isEmpty())
        stack.pop();

2.5QQueue

類似于隊列,先入先出的特點,enqueue()和dequeue()用于操作數據進出隊列。

    QQueue<int> queue;
    queue.enqueue(1);
    queue.enqueue(2);
    queue.enqueue(3);
 
    while(!queue.isEmpty())
        queue.dequeue();

3.關聯容器類

關聯容器如下所示

  • QMap
  • QMultiMap
  • QHash
  • QMultiHash
  • QSet

3.1QSet

基于散列表的集合模板類,存儲數據的順序不定,查找速度非常快。

3.2QMap

QMap存儲數據按照鍵的順序來存儲的,一個鍵映射一個值。

    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的子類,一個鍵可以對應多個值。

    QMultiMap<int,int> map;
    map.insert(1,1);
    map.insert(1,2);
    //map.size() == 2 

3.4QHash

基于散列表來實現的,查找速度非常快。

和QMap比較

  • QHash查找速度更快
  • QMap是按鍵順序排序的,QHash數據項任意排序

3.5QMultiHash

QMultiHash是QHash的子類,用于處理多值映射的類,與QMultiMap類似。

原文鏈接:https://blog.csdn.net/wzz953200463/article/details/125434778

欄目分類
最近更新