c++ 关联容器用法详解(set与map)

本文详细介绍了C++ STL中的关联容器set与map的基本概念、特点及常用操作方法,并通过实例展示了如何利用这些容器进行高效的数据管理和操作。同时,还探讨了set与map在不同场景下的应用技巧。

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

三、关联容器

关联容器与序列容器有着根本性的不同,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的。关联容器支持高效的关键字查找与访问。两个主要的关联容器类型是map与set。

1.set

1.1 简介:set里面每个元素只存有一个key,它支持高效的关键字查询操作。set对应数学中的“集合”。

1.2 特点:

  • 储存同一类型的数据元素(这点和vector、queue等其他容器相同)
  • 每个元素的值都唯一(没有重复的元素)
  • 根据元素的值自动排列大小(有序性)
  • 无法直接修改元素
  • 高效的插入删除操作

1.3 声明:set<T> a

set<int> a;

1.4 常用函数

以下设 set<T> a,其中a是T类型的set容器。

表达式

返回类型

说明

a.begin()

返回指向第一个元素的迭代器

a.end()

返回指向超尾的迭代器

a.clear()

清空容器a

a.empty()

判断容器是否为空

a.size()

返回当前容器元素个数

a.count(x)

返回容器a中元素x的个数

1.6 插入元素:

  • a.insert(x) :其中a为set<T>型容器,x为T型变量
	set<int> a={0,1,2,9};
	a.insert(6);
	for(auto it = a.begin();it != a.end();it++)	cout << *it;//输出01269

  • a.insert(first,second):其中first为指向区间左侧的迭代器,second为指向右侧的迭代器。作用是将first到second区间内元素插入到a(左闭右开)。
set<int> a = {0,1,2,9};
set<int> b = {3,4,5};
auto first = b.begin();
auto second = b.end();
a.insert(first,second);
for(auto it = a.begin();it != a.end();it++)	cout << *it;

插入元素会自动插入到合适的位置,使整个集合有序

1.7 删除元素:

  • a.erase(x):删除建值为x的元素
  • a.erase(first,second):删除first到second区间内的元素(左闭右开)
  • a.erase(iterator):删除迭代器指向的元素
  • set中的删除操作是不进行任何的错误检查的,比如定位器的是否合法等等,所以用的时候自己一定要注意。

1.8 lower_bound 和 upper_bound 迭代器:

  • lower_bound(x1):返回第一个大于等于键参数x1的元素的迭代器
  • upper_bound(x2):返回第一个大于键参数x2的元素的迭代器
  • 由以上俩个函数,可以得到一个目标区间,即包含集合中从'x1'到'x2'的所有元素
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

迷亭1213

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

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

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

打赏作者

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

抵扣说明:

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

余额充值