#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
//学生信息的类:包含姓名和成绩
class Student
{
public:
char* name;
int score;
Student(){};
Student(char* n,int s){name=n;score = s;}
~Student(){}
};
//按姓名查找时用到的functor函数对象,如果不明白函数对象是什么,你可以上网查,这是C++比较进阶的技术,这里可能讲不太清楚。这个类就是重载了括号()运算符,所以可以用来当做一个函数来使用。
class StudentAdapter:public unary_function<Student,bool>
{
public:
char* name;
explicit StudentAdapter(char* argName){name=argName;}
bool operator ()(const Student& student){return !strcmp(name,student.name);}
};
int main(){
char name[30];
//构造一些学生信息
Student a("Jack",88);
Student b("Mike",95);
Student c("Mary",100);
Student d("David",99);
Student e("Boxer",77);
//创建vector用来存储
vector<Student> v;
//创建迭代器用来查询
vector<Student>::iterator iter;
//把所有学生信息加入到vector里
v.push_back(a);
v.push_back(b);
v.push_back(c);
v.push_back(d);
v.push_back(e);
cout<<"Student List:"<<endl;
//打印出所有的学生信息
for(iter=v.begin();iter<v.end();iter++)
{
cout<<iter->name<<':'<<iter->score<<endl;
}
cout<<"Input the name of the student you want to query:"<<endl;
//输入你想要查看的学生姓名
cin>>name;
//这一句最重要,用来查询你输入的学生姓名相对应的成绩,find_if函数可以网上查看原型,前两个参数是迭代器起始位置和终止位置,第三个参数是一个用于比较的函数对象,就是比较所有学生中哪个学生的名字和你输入的名字一样
iter = find_if(v.begin(), v.end(), StudentAdapter(name));
if(iter != v.end())
cout<<iter->name<<':'<<iter->score<<endl;
else
cout<<"Can't find the student!"<<endl;
system("pause");
return 0;
}
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
//学生信息的类:包含姓名和成绩
class Student
{
public:
char* name;
int score;
Student(){};
Student(char* n,int s){name=n;score = s;}
~Student(){}
};
//按姓名查找时用到的functor函数对象,如果不明白函数对象是什么,你可以上网查,这是C++比较进阶的技术,这里可能讲不太清楚。这个类就是重载了括号()运算符,所以可以用来当做一个函数来使用。
class StudentAdapter:public unary_function<Student,bool>
{
public:
char* name;
explicit StudentAdapter(char* argName){name=argName;}
bool operator ()(const Student& student){return !strcmp(name,student.name);}
};
int main(){
char name[30];
//构造一些学生信息
Student a("Jack",88);
Student b("Mike",95);
Student c("Mary",100);
Student d("David",99);
Student e("Boxer",77);
//创建vector用来存储
vector<Student> v;
//创建迭代器用来查询
vector<Student>::iterator iter;
//把所有学生信息加入到vector里
v.push_back(a);
v.push_back(b);
v.push_back(c);
v.push_back(d);
v.push_back(e);
cout<<"Student List:"<<endl;
//打印出所有的学生信息
for(iter=v.begin();iter<v.end();iter++)
{
cout<<iter->name<<':'<<iter->score<<endl;
}
cout<<"Input the name of the student you want to query:"<<endl;
//输入你想要查看的学生姓名
cin>>name;
//这一句最重要,用来查询你输入的学生姓名相对应的成绩,find_if函数可以网上查看原型,前两个参数是迭代器起始位置和终止位置,第三个参数是一个用于比较的函数对象,就是比较所有学生中哪个学生的名字和你输入的名字一样
iter = find_if(v.begin(), v.end(), StudentAdapter(name));
if(iter != v.end())
cout<<iter->name<<':'<<iter->score<<endl;
else
cout<<"Can't find the student!"<<endl;
system("pause");
return 0;
}