实验目的: 1.掌握仿函数的基本操作 2.熟练使用基本非变算法 实验器材: C++ 实验内容: 建立小型学生成绩管理系统,实现不同成绩的查询 实验步骤: #include<iostream> #include<set> #include<functional> #include<iterator> #include<algorithm> using namespace std; class Stu { string name; int sno; public: Stu(string n,int s){name=n;sno=s;} void show(){cout<<name<<" "<<sno<<endl;} bool operator>(Stu s)const { return sno>s.sno; } int get(){return sno;} friend ostream &operator<<(ostream &out,Stu s)//流要加引用 { out<<s.name<<" "<<s.sno; return out; } }; class Comp { public: bool operator()(Stu s1,Stu s2) { s1.get()>s2.get(); } }; class print { public: void operator()(Stu s){s.show();} }; int main() { Stu s[]={Stu("ss",20),Stu("gg",23)}; //规则:学号从大到小 //1.greater+重载(const) set<Stu,greater<Stu>> v(s,s+2); //2.自定义仿函数类 set<Stu,Comp> v2(s,s+2); /**输出数据 1、for循环+迭代器-->(*i).show() 2、copy+重载<<(只能用友元) 3、for_each+函数对象 **/ copy(v.begin(),v.end(),ostream_iterator<Stu>(cout,","));//4,5,6 cout<<endl; for_each(v.begin(),v.end(),print());//print函数对象 return 0; } 实验结果(附数据和图表): 实验结果分析及结论: 实验成功,成功的初始化set容器并且用copy和for_each+函数对象,完成了输出。 在输出中,重载<<,>,()完成了学号和姓名的输出。
|
C++STL实验之综合练习
最新推荐文章于 2024-06-12 18:28:23 发布