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;
}
}