简介:所以元素都会在插入时自动被排序
本质:set/multiset属于关联式容器,底层结构是二叉树实现的
set与multiset区别:set不允许有重复元素,multise可以有重复元素
插入数据只有insert
构造:
set
set(const set&s);//拷贝构造 例如:set
赋值:
set&operator=(const set&s);//重载等号 例如:s1=s2;
size();//返回容器中元素个数 例如:s1.size();
empty();//判断容器是否为空 例如:s1.empty();
swap(s);//交换 例如:s1.swap(s2);
set容器不允许使用resize;
insert(elem);//插入 例如:s.insert(10);
clear();//清空
erase(pos);//删除pos迭代器所指元素;例如:s.erase(begin());
erase(elem);删除容器中elem 例如:s.erase(19);
erase(begin,end);//删除区间 例如:s.erase(begin(),end());
判断插入是否成功(set可以,multiset不可以)
pair
{
if(ret.second) cout<<"插入成功";
else cout<<"插入失败";
}
find(key);//存在,返回元素迭代器;不存在,返回set.end();
例如:set
count(key);//统计key的元素个数即0或1;
pair
例如:pair
pair
例如:pair
set容器默认从小到大
利用仿函数,改变排序规则
class Mycompare
{
public:
bool operator()(int v1,int v2)
{
return v1>v2;//v1>v2返回真
}
}
set
插入数据即可降序排列
class person{
public:person(string name,int age){
this->m_Name=name;this->m_Age=age;
}
}
class compareperson{
public:
bool operator()(const person&p1,const person&p2){
return p1.m_Age>p2.m_Age;
}
}
用set