论坛上看到的,拿来学学stl= =
//基于STL的学生信息管理
#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
class student
{
public:
student(string name, string id, float ag):m_sName(name), m_sID(id), m_fAverage(ag)
{
}
student(const student &stu)
{
m_sName = stu.m_sName;
m_sID = stu.m_sID;
m_fAverage = stu.m_fAverage;
}
student& operator= (const student &stu)
{
m_sName = stu.m_sName;
m_sID = stu.m_sID;
m_fAverage = stu.m_fAverage;
return *this;
}
bool operator< (const student &stu)
{
return m_fAverage < stu.m_fAverage;
}
friend ostream& operator<< (ostream &out, const student &stu)
{
out<<stu.m_sName<<" "<<stu.m_sID<<" "<<stu.m_fAverage;
return out;
}
private:
string m_sName;
string m_sID;
//只是为了展示 利用averger字段进行排序,其余的不写了
float m_fAverage;
};
class StudentInforManager
{
public:
StudentInforManager(){}
void SortByAverger()
{
//在这里调用STL 算法库中的函数 sort 默认的排序准则是< 在student类中我们已经重载了
sort(stuVec.begin(), stuVec.end());
}
void PrintStudentInfor()
{
copy( stuVec.begin(), stuVec.end(),
ostream_iterator<student>(cout, "\n") );
}
void AddStudent(student &stu)
{
stuVec.push_back(stu);
}
private:
vector<student> stuVec;
};
StudentInforManager sm;
sm.AddStudent(student("zhangsan", "12301", 70));
sm.AddStudent(student("lisi", "12302", 80));
sm.AddStudent(student("wangwu", "12303", 90));
sm.AddStudent(student("mazi", "12304", 60));
sm.SortByAverger();
sm.PrintStudentInfor();