头文件#include<set>
区别:set元素不能重复,multiset可重复
其函数等方式都一致,我以set为例演示。
容器创建和初始化
int a[5]={1,3,2};
set<int> st;
set<int> st(a,a+3); 从a数组下标0开始获取3个元素
常用函数操作
s.begin() 返回set容器第一个元素位置
s.end() 返回set容器最后元素下一个位置
s.clear() 删除所有元素
s.empty() 容器为空返回1,非空返回0
s.insert() 插入元素
s.erase() 删除元素
s.size() 返回容器元素个数
s.count() 查找容器是否有该元素,有为1,否则为0
s.upper_bound(x) 查找第一个大于x的迭代器
s.lower_bound(x) 查找第一个大于等于x的迭代器
遍历容器
for(auto it=st.begin();it!=st.end();it++)
cout<<*it<<" ";
排序类型
默认从小到大排序
set<int,greater<int>> st; 从大到小排序
自定义排序
假设存在类
class student{
public:
string name;
int age;
};
要对其按年龄排序的话
class myoperator{
public:
bool operator()(const student s1,const student s2){
return s1.age<s2.age; 从小到大
}
};
在容器引用该类就行
set<student,myoperator> st;