set 容器的自定义排序
默认数据类型
1.利用仿函数自定义set容器排序规则
重载()运算符
class Mycompare
{
public:
bool operator()(int v1,int v2)
{
return v1>v2;
}
} ;
2.定义对应的set容器进行数据插操作
void test01()
{
set<int,Mycompare> s2;
s2.insert(30);
s2.insert(10);
s2.insert(20);
s2.insert(10);
s2.insert(40);
printSet(s2);
}
3.利用相应的迭代器进行遍历操作
void printSet(set<int,Mycompare>&st)
{
for(set<int,Mycompare>::iterator it=st.begin();it!=st.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
自定义数据类型的set排序
1.定义数据类型
class Person
{
public:
Person(string name,int age)
{
this->m_Name=name;
this->m_Age=age;
}
string m_Name;
int m_Age;
};
2.利用仿函数自定义set容器排序规则
class Mycompare02
{
public:
bool operator()(Person p1,Person p2)
{
return p1.m_Age<p2.m_Age;
}
};
void test02()
{
//自定义数据类型,都会指定排序规则
set<Person,Mycompare02>st;
//创建Person对象
Person p1("刘备",24);
Person p2("关羽",54);
Person p3("刘备",24);
Person p4("张飞",44);
Person p5("赵云",34);
st.insert(p1);
st.insert(p2);
st.insert(p3);
st.insert(p4);
st.insert(p5);
for(auto it=st.begin();it!=st.end();it++)
{
cout<<"姓名:"<<it->m_Name<<"年龄:"<<it->m_Age<<endl;
}
cout<<endl;
}