您的位置:首页 > 编程语言 > C语言/C++

《C++ Primer》读书笔记 第三章 vector、iterator

2011-10-28 09:26 316 查看

《C++ Primer》读书笔记 第三章 vector、iterator

标签:
学完第三章《标准库类型》

第三章主要介绍string,vector、iterator和bitset
bitset看不懂是什么东西,也不知道它的作用
只仔细看了vector和iterator

写个例子算是总结吧

#include "stdafx.h"

#include <vector>

#include <iostream>

#include <string>

using namespace std;

// 教师类

class clsTeacher

{

public:

string ID; // 教师编号

string Name; // 教师名称

int Age; // 教师年龄

};

// 科目类

class clsSubject

{

public:

string ID; // 科目编号

string Name; // 科目名称

vector<clsTeacher*> Teacher; // 任教老师,可以同时由多名教师任教

};

// 学生类

class clsStudent

{

public:

string ID; // 学生编号

string Name; // 学生姓名

int Age; // 学生年龄

vector<clsSubject*> Subject; // 选修课程,可以同时选修多门课程

};

int main()

{

// 教师资料

clsTeacher teacher1,teacher2,teacher3;

teacher1.ID = "t1";

teacher1.Name = "Bjarne Stroustrup";

teacher1.Age =34;

teacher2.ID = "t2";

teacher2.Name = "James Gosling";

teacher2.Age = 27;

teacher3.ID = "t3";

teacher3.Name = "比尔盖茨";

teacher3.Age = 38;

// 科目资料

clsSubject subject1,subject2;

subject1.ID = "subject1";

subject1.Name ="C++程序设计";

// 添加该科目任教的教师,同一科目可以有多名教师

subject1.Teacher.push_back(&teacher1);

subject2.ID = "subject2";

subject2.Name ="J***A程序设计";

// 添加该科目任教的教师,同一科目可以有多名教师

subject2.Teacher.push_back(&teacher2);

subject2.Teacher.push_back(&teacher3);

clsStudent student1,student2,student3;

// 学生列表

vector<clsStudent*> vecStu;

// 学生资料

student1.ID = "student1";

student1.Name = "student1";

student1.Age = 23;

// 添加student1选修的科目,同一学生可以选修多门科目

student1.Subject.push_back(&subject2);

// 把student1添加到学生列表里

vecStu.push_back(&student1);

student2.ID = "student2";

student2.Name = "student2";

student2.Age = 24;

// 添加student2选修的科目,同一学生可以选修多门科目

student2.Subject.push_back(&subject1);

student2.Subject.push_back(&subject2);

// 把student2添加到学生列表里

vecStu.push_back(&student2);

student3.ID = "student3";

student3.Name = "student3";

student3.Age = 25;

// 添加student3选修的科目,同一学生可以选修多门科目

student3.Subject.push_back(&subject2);

// 把student3添加到学生列表里

vecStu.push_back(&student3);

// 输入的学生编号

cout<<"请输入要查找的学生的编号,输入E退出程序"<<endl;

string strID;

while(cin >>strID)

{

if(strID == "E" || strID == "e") break;

// 是否找到学生

bool bFind = false;

// 使用迭代器遍历学生列表

for(vector<clsStudent*> ::iterator iterStu = vecStu.begin(); iterStu != vecStu.end(); ++iterStu)

{

// 判断学生是否相等

if((*iterStu)->ID == strID )

{

// 找到学生,输出学生的信息

cout<<"学生编号:"<<(*iterStu)->ID<<endl

<<"学生姓名:"<<(*iterStu)->Name<<endl

<<"学生年龄:"<<(*iterStu)->Age<<endl;

// 使用迭代器遍历该学生所有选修的科目列表

for(vector<clsSubject*>::iterator iterSub=(*iterStu)->Subject.begin(); iterSub!=(*iterStu)->Subject.end(); ++iterSub)

{

// 输出科目信息

cout<<"科目编号:"<<(*iterSub)->ID<<endl

<<"科目姓名:"<<(*iterSub)->Name<<endl;

// 使用迭代器遍历该学生所有选修的科目的任教老师的列表

for(vector<clsTeacher*>::iterator iterTea=(*iterSub)->Teacher.begin(); iterTea!=(*iterSub)->Teacher.end(); ++iterTea)

{

// 输出教师信息

cout<<"教师编号:"<<(*iterTea)->ID<<endl

<<"教师姓名:"<<(*iterTea)->Name<<endl

<<"教师年龄:"<<(*iterTea)->Age<<endl;

}

}



bFind = true;

cout<<"请输入要查找的学生的编号,输入E退出程序"<<endl;

break;

}

}

// 没有找到学生

if(!bFind)

{

cout<<"没有你要查找的学生"<<endl

<<"请输入要查找的学生的编号,输入E退出程序"<<endl;

}

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: