【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,到这里咱们的容器也就讲完了,接口确实很多,但是大部分都是通用的,因此不比害怕。

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

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

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

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

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

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

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

相关文章
|
2月前
|
存储 Java 容器
HashMap 的基本操作【集合容器知识回顾 ⑤】
本文介绍了HashMap的基本操作,包括创建对象、添加、获取、删除和替换元素、获取所有key的集合、遍历HashMap,以及如何存储自定义类型键值对,并强调了当使用自定义对象作为键时需要重写equals和hashCode方法以确保正确的行为。
HashMap 的基本操作【集合容器知识回顾 ⑤】
|
2月前
|
存储 Java 容器
HashSet 的基本操作【集合容器知识回顾 ④】
本文介绍了HashSet的基本操作,包括创建和初始化、添加和删除元素、判断元素存在性、获取集合大小、遍历、求交集差集、转换为数组和其他集合类型、比较两个HashSet,以及如何将自定义对象作为HashSet的元素时重写hashCode和equals方法,最后总结了HashSet的性能特点和使用注意事项。
HashSet 的基本操作【集合容器知识回顾 ④】
|
2月前
|
存储 安全 Java
ArrayList的基本操作【集合容器知识回顾 ②】
这篇文章详细介绍了ArrayList的基本操作,包括创建对象、添加和删除元素、获取和更新元素、遍历、判断元素存在性、集合的空值检查、批量操作、转换为数组、截取子集合、查找元素索引、克隆拷贝、清空集合以及容量管理等,同时指出了使用ArrayList时的注意事项,如线程安全性、容量管理、删除元素的性能、遍历时的修改、空值处理和性能优化。
ArrayList的基本操作【集合容器知识回顾 ②】
|
2月前
|
存储 安全 Java
集合概览【集合容器知识回顾 ①】
这篇文章是关于Java集合框架的全面介绍,包括集合的层次结构、常见集合类的特点、如何学习集合框架、泛型的应用、基本操作以及一些常用的集合操作技巧和注意事项。
集合概览【集合容器知识回顾 ①】
|
2月前
|
Java API 索引
LinkedList的基本操作【集合容器知识回顾 ③】
本文详细介绍了LinkedList的基本操作,包括初始化、添加、获取、删除、替换元素、遍历,以及LinkedList独有的队列和栈相关操作,同时指出了LinkedList在插入和删除操作方面的优势以及在随机访问元素时的性能劣势。
|
3月前
|
安全 算法 Java
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
这篇文章讨论了Java集合类的线程安全性,列举了线程不安全的集合类(如HashSet、ArrayList、HashMap)和线程安全的集合类(如Vector、Hashtable),同时介绍了Java 5之后提供的java.util.concurrent包中的高效并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList。
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
|
3月前
|
Java 容器
【Java集合类面试一】、 Java中有哪些容器(集合类)?
这篇文章列出了Java中的四大类集合接口:Set、List、Queue和Map,以及它们的常用实现类,如HashSet、TreeSet、ArrayList、LinkedList、ArrayDeque、HashMap和TreeMap。
【Java集合类面试一】、 Java中有哪些容器(集合类)?
|
3月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
200 3
|
3月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
57 2
|
4月前
|
存储 语音技术 Python
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)