【qt】联合容器和集合容器

简介: 【qt】联合容器和集合容器

一.QMap

1.应用场景

QMap的底层实现是用的平衡二叉树(红黑树),是一种有序的关联容器。

键可以理解为一种索引值,如现实生活中的身份证号,一个身份证号只能对应一个公民。

键与值是一种一一对应的关系。

QMap是以键值对的形式进行保存数据.只能一个键对应一个值。

2.添加数据

通过insert插入键值对


运行结果:

3.删除数据

用remove(键),对应的值也会一同被删除

运行结果:

4.修改数据

因为键与值是一一对应的,所以要修改值,可以通过重新插入覆写里面的值。


运行结果:

还可以通过找到键的迭代器然后进行修改

运行结果:

5.查找数据

因为QMap是有序的,所有我们可以同过[键]来查找值。

也可以通过value()这个接口来查找。


运行结果:

还可以通过find()查找,不过返回的是迭代器,需要*解引。

运行结果:

6.数据个数

count(),查键的个数只能是1。因为一对一关系。

运行结果:


7.是否包含

contains()

运行结果:

8.返回所有的键名

keys(),将建名保存在一个QList< QString >中。



运行结果:

二.QHash

1.应用场景:

QHash的底层实现是用的哈希表,也是存放的键值对,只不过是无序的。

查找的速度快,插入的速度也快

接口与QMap完全相同!

三.QMultiMap

Multi是多的意思,上面咱们不是说一个键只能对应一个值,这里则不然,一个键可以对应多个值,就像一个渣女的有多个男朋友一样

运行结果:

注意:

  • 此时就不能通过这种方式进行查找了


  • 删除时如果不指定值,将全部删除相同的键

    运行结果:

  • values可以得到一个键对应的所有的值

    运行结果:

四.QMultiHash

和QMultiMap基本一样。

五.QSet

1.应用场景

集合大家应该都知道吧,我记得我是高一学过,我们就生活在一个个集合之中。

一个集合,不可能有两个一模一样的我,所以集合具有唯一性

底层的实现用的是哈希表,但是存储的数据不是键值对,而是一个值。

2.交集

接口几乎与哈希差不多,来讲讲不同的,首先并集

拿出我的小学的画画水平

用intersect(),对参数不会参数影响

来看看代码怎么实现:



运行结果:

addr2不变,addr变成两个所共有的

3.并集

就是将你我的都全部合起来。

代码:

用unite()


运行结果:

4.差集

就是我所特有的

subtract()

运行结果:


总结:

OK,到这里咱们的容器也就讲完了,接口确实很多,但是大部分都是通用的,因此不比害怕。

更重要的是知道我们该如何去选择合适的容器。

一般底层是类似数组的就查询快

底层实现里面有指针的就插入删除快

一般需要键值的就用联合容器

需要唯一性的就集合容器等等

谢谢你的阅读,希望能帮到你。

雷军是我偶像,永远相信美好的事情即将到来!

相关文章
|
22天前
|
存储 C++ 开发者
C++ Qt开发:使用顺序容器类
当我们谈论编程中的数据结构时,顺序容器是不可忽视的一个重要概念。顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构。它们提供了简单而直观的方式来组织和管理数据,为程序员提供了灵活性和性能的平衡。
102 3
|
22天前
|
存储 算法 Java
容器【双例集合、TreeMap容器的使用、 Iterator接口、Collections工具类】(四)-全面详解(学习总结---从入门到深化)(中)
容器【双例集合、TreeMap容器的使用、 Iterator接口、Collections工具类】(四)-全面详解(学习总结---从入门到深化)
54 0
|
16天前
|
存储 Python 容器
Python 基础 笔记(八) 容器---元组、字典、集合
Python 基础 笔记(八) 容器---元组、字典、集合
25 4
|
22天前
|
API 容器
Qt中常用容器组控件介绍和实操-2
Qt中常用容器组控件介绍和实操
|
22天前
|
容器 内存技术
Qt中常用容器组控件介绍和实操-1
Qt中常用容器组控件介绍和实操
|
22天前
|
C++ 容器
【qt】容器的用法
【qt】容器的用法
12 0
|
22天前
|
存储 算法 Java
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
34 0
|
22天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
22天前
|
存储 安全 算法
java多线程之并发容器集合
java多线程之并发容器集合
|
22天前
|
存储 算法 C++
C++ STL精通之旅:向量、集合与映射等容器详解
C++ STL精通之旅:向量、集合与映射等容器详解
115 0