C++提高——set/multiset容器

1、set基本概念:所有元素在插入时自动被排序并且不允许有重复出现的元素

本质:set/mutliset属于关联式容器,底层结构式用二叉树实现

set和multiset区别:set不允许容器中有重复的元素、multset允许容器中有重复出现的元素

set容器插入元素的时候使用insert方式


2、set大小和交换:统计set容器大小以及交换set容器

函数原型:size();//返回容器中元素的数目 empty(); //判断容器是否为空

swapt(st); //交换两个集合容器


3、set插入和删除:set容器进行插入数据和删除数据

函数原型:

insert(elem); //在容器中插入元素 clear(); //清除所有元素

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

erase(beg,end); //删除区间[beg,end]的所有元素,返回下一个元素的迭代器

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


4、查找和统计:对set容器进行查找数据以及统计数据

函数原型:

find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();

count(); //统计key的元素个数(对于统计的结果,要么是0要么是1)


5、set和multiset的区别

set不可以插入重复数据,而multise可以

set插入数据的同时会返回插入结果,表示插入是否成功

multiset不会检测数据,因此可以插入重复数据


6、pair对组创建:成对出现的数据,利用对组可以返回两个数据类型

pair<type,type>p (value1,value2);

pair<type,eype>p =make_pair(value1,value2);  


7、set容器排序:set容器默认排序规则为从小到大,掌握如何改变排序规则

主要技术:利用仿函数,改变排序规则 

创建模板的时候直接插入仿函数        set<int,自定义仿函数> S;

当需要存放内置的类型是,可以通过仿函数的编写来改变排序方式

class 自定义仿函数名称
{
public:
    bool operator()(int v1,int v2)
    {
        return v1>v2;
    }
};

当set容器存放自定义类型的时候改变排序的的方法

class 排序名称
{
public:
    bool operator()(const Person&p1,const Person&p2)
    {
        //自定义Person为例子(根据年龄来进行排序)
        return p1.m_Age>p2.m_Age;
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值