基於STL的學生信息管理

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


發佈了17 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章