C++ set和map了解

目录

1.关联式容器

2.键值对

3.set

3.1set介绍

3.2set使用

4.map

4.1map介绍

4.2map使用


1.关联式容器

vector、list、deque等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面
存储的是元素本身。
关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,value>结构的
键值对,在数据检索时比序列式容器效率更高。


2.键值对

用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代
表键值,value表示与key对应的信息。

比如:现在要建立一个英汉互译的字典,那该字典中必然有英文单词与其对应的中文含义,而且,英文单词与其中文含义是一一对应的关系,即通过该单词,在词典中就可以找到与其对应的中文含义。

键值对的定义:


3.set

3.1set介绍

set是按照特定顺序存储唯一元素的容器。

set中元素的值在容器中不能修改一次(元素始终是const),但可以从容器中插入或删除。

map中存放的是真正的键值对<key,value>,set中只存放key,set和map底层都是用红黑树来实现的

set中的元素不可以重复(因此可以使用set进行去重)

T: set 中存放元素的类型
Compare set 中元素默认按照小于来比较
Alloc set 中元素空间的管理方式,使用 STL 提供的空间配置器管理

3.2set使用


4.map

4.1map介绍

1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。
2. 在map中,键值key通常用于排序和唯一地标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名称为pair,typedef pair<const key, T> value_type;
3. 在内部,map中的元素总是按照键值key进行比较排序的。
4. map支持下标访问符,即在[]中放入key,就可以找到与key对应的value。
key: 键值对中 key 的类型
T : 键值对中 value 的类型

4.2map使用

这里重点讲解一下map中的operator[]这个方法,在此之前先讲一下insert

insert插入元素返回的是一个pair<iterator,bool> ,当插入一个元素时,该元素在树中不存在,就插入成功,返回的pair第一个参数指向的是插入位置的迭代器,第二个参数是true;当该元素在树中已经存在,返回的pair第一个参数是已经存在元素的迭代器,第二个是false。我们可以通过第二个参数判断插入是否成功。

下面是map中的operator[]这个方法

key_type是k

value_type是pair<K,T>  -> pair<key,value>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wrf228

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值