論壇上看到的,拿來學學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();