#include<iostream>
#include<set> //自动排序
using namespace std;
struct Student{ //Student结构体
string name;
int age;
};
//仿函数,为Student set指定排序准则
class stuSort{
public:
bool operator()(const Student &a,const Student &b){
//先比较名字,名字相同则比较年龄,小的返回true
if((a.name<b.name)||((a.name==b.name)&&(a.age<b.age)))
return true;//只要写出为true的即可,逻辑不用if-else
}
};
int main()
{
set<Student,stuSort> stuSet;
Student stu1,stu2;
stu1.name="Lily";
stu1.age=9;
stu2.name="Tom";
stu2.age=10;
stuSet.insert(stu1);
stuSet.insert(stu2);
//构造一个测试的Student,可以看到stuTemp与stu1实际上并不是同一个对象
//但在set中查找时,仍会查找成功,因为已定义studentSortCriterion
Student stuTemp;
stuTemp.name="Lily";
stuTemp.age=9;
set<Student,stuSort>::iterator iter;
iter=stuSet.find(stuTemp);
if(iter!=stuSet.end())
cout<<(*iter).name<<endl;
else
cout<<"Not find."<<endl;
return 0;
}
c++ set
最新推荐文章于 2022-05-31 10:14:24 发布