C++:容器Set/multiset/unordered_set

set(红黑树)(自动排序)

头文件:#include <set>

是一个集合容器,其中包含的元素是唯一的,通过红黑树的数据结构实现
集合中的元素按照一定的顺序排列,且不能指定插入位置

在插入和删除操作上比较快速

不可以直接存取元素,不可以使用类似at.(pos)[]操作符

不可直接修改容器中的元素值,如果要修改需要删除原有元素而后再插入新的元素



采用类模板实现,其默认构造函数: set<T> s;
可进行元素排列: set<int , less<int>> seta; //该容器按照升序方式排列
						  set<int ,greater<int>> setb; //该容器按照降序方式排列
						  //因为其自带升序排列,故set<int> == set<int ,less<int>>

函数部分:


```cpp
set.insert();//在容器中插入元素
	set.begin();//返回容器中第一个数据的迭代器
	set.end();//返回容器中最后一个数据的后面的迭代器
	set.rbegin();//返回容器中倒数第一个元素的迭代器
	set.rend();//返回容器中倒数最后一个元素的后面的迭代器

	set(const set &st);//拷贝构造函数
	set &operator=(const set &st);//重载等号操作符
	set.swap(st);//交换两个集合容器

	set.size();//返回容器中元素的数目
	set.empty();//判断容器是否为空

	set.clear();//清空所有元素
	set.erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器
	set.erase(beg,end);//删除[beg,end)区间的所有元素,返回下一个元素的迭代器,且注意为左闭右开区间
	set.erase(elem);//删除容器中为elem的元素

重点

set.find(elem);//查找elem元素,返回指向elem元素的迭代器
set.count(elem);//返回容器中值为elem的元素的个数,对set来说,1或0,因为set不允许重复
set.lower_bound(elem);//返回第一个>=elem元素的迭代器
set.upper_bound(elem);//返回第一个>elem元素的迭代器
set.equal_range(elem);//返回容器中与elem相等的上下限的两个迭代器,上限是闭区间,下限为开区间[beg,end)

multiset和unordered_set的用法与set类似
区别在于:

multiset可以有重复的值

unordered_set的内部结构为哈希表,需要用哈希函数(散列函数)进行求值插入
且内部排列紊乱,是无序的,不过查找快
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值