C++核心编程(三十四)容器(set/multiset)

本文详细介绍了C++中的set和multiset容器,包括它们的基本概念、构造方式、插入删除操作、查找统计功能以及自定义排序规则。set确保元素唯一并自动排序,而multiset允许元素重复。通过示例展示了如何使用自定义排序规则来操作自定义数据类型。
摘要由CSDN通过智能技术生成

set和multiset

1)所有元素都会在插入时自动排序
2)本质上属于关联式容器,底层结构是二叉树实现
3)set不允许容器中出现重复的元素
4)multiset允许容器中出现重复的元素

set容器的构造

1)默认构造set<t> s;
2)拷贝构造:set<T> s(s1);
3)运算符重载拷贝构造:set<T> s=s1;

##set容器的大小操作和交换操作
1)size();//返回容器中元素的个数
2)empty();//判断容器是否为空
3)cppswap();//交换集合容器

set容器插入和删除

1)插入元素:insert(elem);//在容器中插入元素;
2)清空元素:clear();//清除所有元素
3)删除指定位置的元素:erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器
4)删除区间中的元素:earse(beg,end)//删除区间beg,end的所有元素,返回第一个元素的迭代器;区间一定要设置为迭代器
5)删除容器中值为elem的元素:earse(elem);//删除容器中elem的元素

set容器的查找和统计

1)查找元素:find(key);//查找key是否存在,存在返回该元素的迭代器,否则返回end()迭代器
2)统计元素中的个数:count(key);//统计容器中key元素个数

set和multiset的区别

1)set在插入数据的时候会返回一个插入结果类型为pair<vector::iterator,bool>;pair.second为真成功插入,为假插入失败
2multiset没有插入检测
3)multiset可以重复插入,set不行

set容器内置类型指定排序规则

例子如下:
因为默认是从小到大排序,从新指定排序规则从大到小;

#include<iostream>
#include<set>
using namespace std;
class mysort
{
   
public:
        bool operator()(int v1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值