STL——map && set

文章主要介绍了C++中的关联式容器,包括set、map、multiset和multimap。阐述了关联式容器与序列式容器的区别,键值对的概念。详细讲解了各容器的特点、构造、迭代器等,还指出它们底层基于红黑树,是对二叉搜索树平衡处理后的结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章将解决一下几个问题:
1.什么是set
2.什么是map
3.set应用场景
4.map应用场景

序列式容器和关联式容器

数据结构有序列式容器和关联式容器,序列式容器一般有vector,list,deque…,但关联式容器中就有map,关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,value>结构的键值对,在数据检索时比序列式容器效率高。

键值对

它是用来表示具有一一对应关系的一种结构,该结构一般只包含了两个成员变量key和value,key代表了键值,value表示与key对应的信息。 如果字典,每个单词都有对应的关系,英文单词和其对应的含义就是一一对应的关系,通过该单词就可以找到对应的意思。

下面是STL中关于键值对的定义:

template <class T1, class T2>
struct pair
{
   
   
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair(): first(T1()), second(T2())
{
   
   }
pair(const T1& a, const T2& b): first(a), second(b)
{
   
   }
};

树形结构的关联式容器

STL总共实现了两种不同结构的管理师容器:树形结构和哈希结构。
树形结构的关联式容器有map、set、multimap、multiset。这四种容器的底层就是红黑树。

set

  1. set是按照一定次序存储元素的容器
  2. 在set中,元素的value也标识了它(value,T类型),并且每个value都只有一个,set中的元素不能在容器中修改,但是可以从容器中插入和删除
  3. 在内部,set中的元素总是按照其内部比较对象,所指示的特定严格若排序准则进行排序
  4. set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们可以根据顺序子集进行直接迭代
  5. 底层是红黑树
    在这里插入图片描述

T是set中元素的类型实际存储的是<key,value>的键值对
Compare是仿函数,默认是升序的,可以根据需求改写仿函数
Alloc:set中元素空间的管理方式,使用STL的空间配置器来管理

set的构造

在这里插入图片描述

set的迭代器

在这里插入图片描述

下面是实例:

#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值