• Qt 容器类


    1.概述

    Qt提供了多个基于模板的容器类,这些类可以用于存储指定类型的数据项,例如QStringList就是从QList<QString>继承的,可以实现对字符串的增、删等操作。

    Qt的容器类分为顺序容器和关联容器。

    Qt的容器类比STL更轻巧、安全和容易使用,并且还是线程安全的。

    例:定义一个QList<QString> 容器

    1. QList<QString> str;
    2. str.append("A");
    3. str.append("B");
    4. 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()用于数据进出栈。

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

    2.5QQueue

    类似于队列,先入先出的特点,enqueue()和dequeue()用于操作数据进出队列。

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

    3.关联容器类

    关联容器如下所示

    • QMap
    • QMultiMap
    • QHash
    • QMultiHash
    • QSet

    3.1QSet

    基于散列表的集合模板类,存储数据的顺序不定,查找速度非常快。

    3.2QMap

    QMap存储数据按照键的顺序来存储的,一个键映射一个值。

    1. QMap<int,int> map;
    2. map[1] = 1;
    3. map[2] = 2;
    4. map[3] = 3;
    5. //或者使用insert
    6. QMap<int,int> map;
    7. map.insert(1,1);
    8. map.insert(2,2);
    9. map.insert(3,3);

    查找

    1. int num = map[1];
    2. //或者
    3. int num2 = map.value[2];

    3.3QMultiMap

    是QMap的子类,一个键可以对应多个值。

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

    3.4QHash

    基于散列表来实现的,查找速度非常快。

    和QMap比较

    • QHash查找速度更快
    • QMap是按键顺序排序的,QHash数据项任意排序

    3.5QMultiHash

    QMultiHash是QHash的子类,用于处理多值映射的类,与QMultiMap类似。

  • 相关阅读:
    【毕业设计】基于深度学习卷积神经网络的手势识别算法 - python opencv 机器视觉
    每日一题Day40-41
    Docker私有镜像仓库(Harbor)安装
    【编程语言发展史】Unity开发语言的历史发展
    什么是凸函数
    Pr:导出设置之音频
    尚硅谷大数据项目《在线教育之离线数仓》笔记007
    Cookie的常用方法(javaWeb)
    如何剪辑视频?方法来了,零基础也能学会!
    【JAVA】SpringMVC(下)—— SSM整合&异常处理器
  • 原文地址:https://blog.csdn.net/wzz953200463/article/details/125434778