服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Qt常用容器类的使用

Qt常用容器类的使用

2023-02-14 15:39Mr.codeee C/C++

本文主要介绍了Qt常用容器类的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.概述

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

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

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

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

?
1
2
3
4
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()用于数据进出栈。

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

2.5QQueue

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

?
1
2
3
4
5
6
7
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存储数据按照键的顺序来存储的,一个键映射一个值。

?
1
2
3
4
5
6
7
8
9
10
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);

查找

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

3.3QMultiMap

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

?
1
2
3
4
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 容器类内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

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

延伸 · 阅读

精彩推荐
  • C/C++C++实现高校人员信息管理系统

    C++实现高校人员信息管理系统

    这篇文章主要为大家详细介绍了C++实现高校人员信息管理系统项,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    名名名名11702021-11-16
  • C/C++VS2010 boost标准库开发环境安装教程

    VS2010 boost标准库开发环境安装教程

    这篇文章主要为大家详细介绍了VS2010 boost标准库开发环境的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    尹成4422021-05-08
  • C/C++C语言代码实现猜数字

    C语言代码实现猜数字

    这篇文章主要为大家详细介绍了C语言代码实现猜数字,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    向北的大白熊6602021-10-06
  • C/C++详解C语言之文件操作(下)

    详解C语言之文件操作(下)

    这篇文章主要介绍了关于C语言文件操作方法的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...

    iEucliwood11322022-02-20
  • C/C++C++实现LeetCode(141.单链表中的环)

    C++实现LeetCode(141.单链表中的环)

    这篇文章主要介绍了C++实现LeetCode(141.单链表中的环),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    Grandyang4472021-12-02
  • C/C++C语言 野指针与空指针专篇解读

    C语言 野指针与空指针专篇解读

    全网最接地气的C语言野指针介绍,此处对于野指针与空指针知识点做一些简要的介绍,作者实属初学,写博客也是作者学习的一个过程,难免文章中有内容...

    RookieStriver6282022-02-24
  • C/C++基于C++实现简单日期计算器

    基于C++实现简单日期计算器

    这篇文章主要介绍了基于C++实现简单日期计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    pigdwh3732021-09-06
  • C/C++C++11中模板隐式实例化与显式实例化的定义详解分析

    C++11中模板隐式实例化与显式实例化的定义详解分析

    实例化是为在程序中的函数模板本身并不会生成函数定义,它只是一个用于生成函数定义的方案。编译器使用模板为特定类型生成函数定义时,得到的是模...

    云飞扬_Dylan5092022-11-16