set的基本接口以及基本性质,基本接口测试

本文深入解析C++ STL中的set容器,涵盖其创建、迭代器使用、容器大小操作、插入与删除方法、查找功能及特性。从红黑树实现到具体函数应用,全面掌握set容器的高效使用技巧。

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

1.创建
set<typename, compare>对象名字按照compare的方式来决定输出排序方式
,如果第二个参数不写,缺省是从小到大
2.迭代器
begin()返回一个指向当前容器开始位置的只读迭代器
end()返回一个指向当前容器末尾位置的只读迭代器
rbegin()返回一个指向当前容器开始末尾的只读迭代器
rend()返回一个指向当前容器开始位置的只读迭代器
cbegin()返回一个指向当前容器开始位置的只读迭代器
cend()返回一个指向当前容器末尾位置的只读迭代器
rcbegin()返回一个指向当前容器末尾位置的只读迭代器
rcend()返回一个指向当前容器开始位置的只读迭代器
事实上begin与cbegin,end与cend并未区别
3.容器大小类
1.empty判断当前容器是否为空
2.size返回当前容器的元素个数
3.max_size返回当前容器所能容纳元素的最大个数(一般很少用)
4.插入,删除
1.insert
常见有三种重载形式
iterator insert (const_iterator position, const value_type& val);
把val插入到当前set容器的相应位置,注意这里的position只是个建议,实际由于set的底层实现是一个搜索树,所以还是将val插入到了自己对应的位置
void insert (iterator first, iterator last);
将<first,last>区间插入set容器里边
pair<iterator,bool> insert (value_type&& val)
将val插入set容器的响应位置
2.erase
iterator erase (const_iterator position);
将position迭代器对应的位置元素删除,注意这里的position必须有效
size_type erase (const value_type& val);
将val删除,并返回删除元素的个数
注意set的元素始终是没有重复的,因此返回不是0,就是1
iterator erase (const_iterator first, const_iterator last);
删除<first,last>区间的元素
3.查找
1.find
terator find (const value_type& val);
查找值为val的元素,并返回它的迭代器,如果找不到,则返回当前容器的end()
2.size_type count (const value_type& val) const;
返回值为val的元素在容器中出现的个数
其实不是0就是1,可以用来进行查找

set容器的基本性质:
1.实现—>目前用红黑树进行实现
2.底层是一个k(key)v(value)的搜索树,而且k与v一样
3.set只需要存放value即可,并不需要key
4.只能存放不重复的值
5.set中元素不可以进行修改
6.set缺省比较是小于,可以通过仿函数来进行修改
7.迭代器遍历是有序的,实际上走的是一个二叉搜索树的层序遍历
8.迭代器只可以读内容,不可以写内容
9.插入:如果传的是一个迭代器和value的重载形式,那么这里的迭代器只是个参考,并不是绝对位置,想想二叉搜索树的结构你就秒懂
10.删除会的导致当前迭代器失效,并不会影响到其他的迭代器
11.find找到待查元素的迭代器,不存在返回end()
12.count获取当前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值