两者的区别
- set不容许容器中有重复的元素,multiset允许容器中有重复的元素
- set插入数据的同时会返回插入结果,表示插入是否成功
- multiset不会检测数据,因此可以插入重复数据
Set构造和赋值
构造
#include<set>
set<T> st //默认构造函数
set(const set &st);//拷贝构造函数
特点
- 所有元素插入时自动被怕【被排序
- set容器不允许插入重复值,如果有不会报错,但是编译器会自动排掉
赋值
- set& operator = (const set &st);//重载等号操作符
- 然后直接等号赋值
函数操作
- size()
- swap(set st)
- empty()
- inset(elem)
- clear()//删除所有元素
- erase(pos)
- erase(beg,end)//删除区间beg,end(左闭右开)的所有元素,返回下一个元素的迭代器
- erase(elem)
- find(key)//查找key是否存在,若存在则返回该元素的迭代器,若不存在,则返回set.end()
- count(key)//统计key的元素个数
容器排序
- 利用仿函数,可以改变排序规则
- set存放内置的数据类型
- 写仿函数//本质是一个类
- 写一个类,然后对bool operator()()进行重载,重写set内部的自动排序规则
- 在使用默认构造函数的时候set<T,自己定义的类>s2;
- set存放自定义的数据类型
- 写仿函数//区别就在此