Qt常用容器类的使用

目录
  • 1.概述
  • 2.顺序容器类
    • 2.1QList
    • 2.2QLinkedList
    • 2.3QVector
    • 2.4QStack
    • 2.5QQueue
  • 3.关联容器类
    • 3.1QSet
    • 3.2QMap
    • 3.3QMultiMap
    • 3.4QHash
    • 3.5QMultiHash

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类似。

到此这篇关于Qt常用容器类的使用的文章就介绍到这了,更多相关Qt 容器类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Qt 关于容器的遍历迭代器的使用问题小结

    目录 前言: STL风格迭代器: foreach关键字: 其他: 前言: Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序. 对容器进行遍历通常会使用迭代器,迭代器提供了一个统一的方法来访问容器中的项目.Qt的容器类提供了两种类型的迭代器,一个是Java风格迭代器,一个是STL风格迭代器

  • Qt常用容器类的使用

    目录 1.概述 2.顺序容器类 2.1QList 2.2QLinkedList 2.3QVector 2.4QStack 2.5QQueue 3.关联容器类 3.1QSet 3.2QMap 3.3QMultiMap 3.4QHash 3.5QMultiHash 1.概述 Qt提供了多个基于模板的容器类,这些类可以用于存储指定类型的数据项,例如QStringList就是从QList<QString>继承的,可以实现对字符串的增.删等操作. Qt的容器类分为顺序容器和关联容器. Qt的容器类比ST

  • Qt股票组件之自选股列表拖拽、右键常用菜单功能的实现

    一.开头嘴一嘴 本文带领大家来看看自选股列表的实现. 如果有需要的朋友可以加我好友,有偿提供源码.或者也可以进一步提供功能定制 封装的控件,或者demo都是没有样式的,所以看着会比较丑一些,不过加样式也是分分钟...这里咱可以先看功能,需要即可定制 本篇文章的自选股和大多数炒股软件一样,每一条自选都是支持拖拽的,拖拽时鼠标会跟随一个拖拽映像,并且鼠标移动时,会有拖拽提示,告知我们鼠标释放时拖拽项将会被插入到哪个位置.除过拖拽之外,自选股列表还支持右键菜单,都是一样常用的操作. 右键菜单包括置顶.

  • Qt学习之容器类的使用教程详解

    目录 一. QList类,QLinkedList类 和 QVector类 (1)QList类 (2) QLinkedList 类 (3) QVector 类 二. QMap类和QHash类 1 . QMap类 2.QHash类 3. STL风格的迭代器容器遍历 三. QVariant类 四. Qt的算法 Qt提供来一组通用的基于模板的容器类. 一. QList类,QLinkedList类 和 QVector类 QList类.QLinkedList类和QVector类常常使用到的Qt容器类有QLi

  • Java容器类的深入理解

    Java容器类包含List.ArrayList.Vector及map.HashTable.HashMap ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而ArrayList和HashMap并不是线程安全的.因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于ArrayList和HashMap.Collection├List       接口│├LinkedList       链表

  • 微信小程序 setData使用方法及常用错误解决办法

    微信小程序 setData使用方法及常用错误解决办法 最近在弄微信小程序,类似于共享单车用来练练手,基本原理就是小程序发送经纬度给服务器,服务器从数据库中检索经纬度附近的单车传给小程序. 就在这里..没错就是这里,传回来的值是以jsonarray格式传过来的. 我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok, 结果没想到小程序setData()设置数组对象的某个元

  • C#利用正则判断输入是否为纯数字、容器类

    容器类.正则表达式在几乎所有编程语言都存在的东西.很常用也很使用.下面用如下的一个控制台小程序说明C#的正则表达式与容器类的应用. 开始直接输出在C#定义好的数据字典Dictionary,这就是Java与Python的HashMap,之后定义一个存int的List,让用户无限输入这个List的元素,输入到#则停止输入,在输入的过程中遇到不是纯输入,则拒绝这个输入.  遍历这个List输出,之后利用C#的另一个容器HashSet为这个List去重. 这个程序的代码如下,其实以上所有的东西都在以前的

  • 浅谈iOS中几个常用协议 NSCopying/NSMutableCopying

    1.几点说明 说到NSCopying和NSMutableCopying协议,不得不说的就是copy和mutableCopy. 如果类想要支持copy操作,则必须实现NSCopying协议,也就是说实现copyWithZone方法; 如果类想要支持mutableCopy操作,则必须实现NSMutableCopying协议,也就是说实现mutableCopyWithZone方法; iOS系统中的一些类已经实现了NSCopying或者NSMutableCopying协议的方法,如果向未实现相应方法的系

  • java容器类知识点详细总结

    1.java容器分类图 2.容器类接口和抽象容器类 2.1 说明 容器接口是容器的基础.使用接口可以将容器的实现与容器接口分开,因而可以使用相同的方法访问容器而不需关心容器具体的数据结构. 同理,Iterator接口也使用户能够使用相同的方法访问不同的容器类. 2.2 容器接口(Collection,Map,Iterator) 1)collection接口 boolean add(Object obj): 添加对象,集合发生变化则返回true Iterator iterator():返回Iter

  • PyQt 图解Qt Designer工具的使用方法

    前言 Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用.本文主要通过用户登录需求描述Qt Designer工具开发界面的使用方法. 开发工具版本 pyhton3.7.4 + PyQt 5.11.2 Qt Designer工具主界面 打开路径:${python安装目录}/Lib/site-packages/pyqt5_tools/designer.exe

随机推荐