set是一个关联式容器,存储的元素必须按照一定的规则排序,那么如果是一个结构体参数,或者类参数,按照那一个标准进行排序插入呢?
下面代码示例:
#include<iostream>
#include<set>
#include<algorithm>
#include<functional>
#include<string>
using namespace std;
class Student
{
public:
Student(){}
Student(string iname,float iscore):name(iname),score(iscore){}
~Student(){}
bool operator<(const Student& a)const//定义排序准则
{
return a.name<name;
}
string name;
float score;
};
class StudentAdapter:public unary_function<Student,bool>
{
private:
string name;
public:
explicit StudentAdapter(string iname):name(iname){}
bool operator()(const Student& student)
{
return (student.name==name);
}
};
int main()
{
set<Student> admin;
set<Student>::iterator pos;
Student stu1("lanzhihui",89.1);
Student stu2("wangdan",89.2);
Student stu3("lan",89.3);
admin.insert(stu1);
admin.insert(stu2);
admin.insert(stu3);
for(pos=admin.begin();pos!=admin.end();++pos)
{
cout<<pos->name<<" "<<pos->score<<endl;
}
Student stu;
stu.name="lanzhihui";
pos=admin.find(stu);//使用成员函数而不使用STL算法中的find
{
cout<<"find: ";
cout<<pos->name<<" "<<pos->score<<endl;
}
system("pause");
return 0;
}