set容器

本文详细介绍了C++中的set容器,包括基本概念、构造函数、大小和交换、插入与删除、查找和统计、insert插入数据的返回值,以及pari对组的使用。重点讨论了set的排序机制,包括内置数据类型和自定义数据类型的排序规则设定,通过仿函数实现不同排序需求。
摘要由CSDN通过智能技术生成

set/multiset容器

基本概念

所有元素在插入时会自动排序(从小到大)

本质

set/multiset属于关联式容器,底层结构是用二叉树实现

set和multiset的区别

  • set不允许容器中有重复的元素
  • multiset允许有重复元素
set容器构造函数

set容器没有push_back的插入元素方式,只能用insert

set容器依然有拷贝构造

当set容器中插入相同的数据时,编译器不会报错,但实际上并不会插入重复的数据

set<int>s;
s.insert(20);
s.insert(10);
s.insert(20);

容器中只有10和一个20.

set大小和交换

函数原型:

  • size()		返回元素数目
    
  • empty()		判断容器是否为空
    
  • swap(st)	交换两个容器
    

    注意

    set容器没有重新指定容器大小的操作,因为重新指定大小时,若指定的大小比原有个数大时,会用0填充,填充的部分不一定只有一个,可能有多个,这样就违背了set容器中没有重复数据的原则。

set插入与删除

函数原型:

insert(elem) 插入元素

clear() 清空容器

erase(pos) 删除pos迭代器所指的元素,返回下一个元素的地址

erase(beg,end) 删除区间【beg,end)的所有元素

erase(elem) 删除容器中值为elem的元素。

.begin() 返回的是排序后的第一个元素的地址。

set查找和统计

对set容器进行查找数据以及统计数据

函数原型:

  • find(key) 查找key是否存在。存在则返回位置,不存在则返回end
  • count(key) 查找key的元素个数

set容器中无重复元素,所以count的返回值只能是0或1;但是multiset容器可以有其他值。

set的 insert插入数据时的返回值

set容器的insert插入数据时,是有返回值的,返回值的类型是pair型(对组),里面有两个数据,第一个数据为迭代器类型,表示插在哪里,第二个为布尔类型,表示是否插入成功。

下面展示,如何接收这个返回值

set<int>s;

pair<set<int>::iterator,bool>ret=s.insert(10
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值