《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;
}
相关文章推荐
- 《C++ Primer》读书笔记-第三章 03 标准库类型vector
- 《C++ Primer》读书笔记第三章-2-标准库类型vector
- 《C++ Primer》读书笔记-第三章 05 数组
- 《C++ Primer》读书笔记第九章-2-顺序容器操作 And vector增长问题
- 《C++ Primer》读书笔记-第三章 06 多维数组
- 《c++ primer》学习笔记 第三章 标准库类型(string, vector,bitset)
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:vector类型
- C++ primer 读书笔记--第三章 标准库类型
- 《C++ Primer》读书笔记第三章-3-迭代器介绍
- 《C++ Primer》读书笔记-第九章 04 vector对象增长
- STL源码分析读书笔记--第三章--迭代器(iterator)概念与traits编程技法
- C++ Primer 读书笔记 – 第三章
- 《C++ Primer》读书笔记第三章-1-标准库类型string
- 《C++ Primer》读书笔记第三章-4-数组 And 多维数组
- c++ primer(第五版)笔记 第三章(3)iterator初探
- C++ Primer 读书笔记 – 第三章
- C++ Primer 读书笔记 - 第三章
- 《c++ primer》——2 标准库vector类型和迭代器iterator
- C++ Primer 读书笔记 – 第三章
- C++ primer 读书笔记系列——(2)标准库vector类型