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,