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

C++面向对象实验三:模板与STL

2016-11-24 17:28 381 查看

C++面向对象实验三:模板与STL

一、实验目的

掌握模板函数和模板类的定义、实例化,学会应用模板来处理函数调用面临的不同的数据类型。

理解模板类的定义和实例化时的方法。

复习栈的出栈和入栈的相关操作。

二、实验要求

内容1:

使用函数模板,求两个数的最大值。 例如:max(3,5)则输出5 max(’3’,’5’)则输出‘5’ max(3.0,5.0)则输出5.0 max(”3”,”5”)则输出”5”

内容2:

设计一个CStudent类,可以存放学生的学号和姓名(其中,学号和姓名都为字符串)例如,学号为{“1001”,”1002” ,”1003” }这3个学号所对应的姓名是{“张三”,”李四” ,”王五” } 如果cs是CStudent类的对象,

三、实验过程

算法:

定义一个单独的函数Max_(T a,T b);

public部分:输入a,b; if (strcmp(a,b)>=0) 进行下标的安全检查,超出范围就退出程序 求两个T类型数最大值 { 返回主函数。 }

内容2: 算法:

定义一个类Class(CStudent)

private部分: 输入no_name

Public部分: 张三赋值1001; 李四赋值1002; 王五赋值1003; 最后输出”查无此人”; 返回主函数 ;

四、源码

#include<iostream>
using namespace std;
template<typename T>
T max(T a,T b) {
return a>b ? a:b;
}

char * max(char *a,char* b)
{
if (strcmp(a,b)>=0)
{
return a;
}  else  {
return b;
}
}
int main()
{
cout<<"max(3,5)="<<max(3,5)<<endl;
cout<<"max(\'3\',\'5\')="<<max('3','5')<<endl;
cout<<"max(3.0,5.0)="<<max(3.0,5.0)<<endl;
cout<<"max(\"3\",\"5\")="<<max("3","5")<<endl;
cout<<"max(\"abc\",\"ABC\")="<<max("abc","ABC")<<endl;
return 0;
}

#include<iostream>
#include<string>
#include<map> #include<algorithm>
using namespace std;
class CStudent
{
private:
map<string,string> no_name;
public:
CStudent()
{
no_name["1001"]="张三";
no_name["1002"]="李四";
no_name["1003"]="王五";
}
string operator[](string index)
{
int ic=no_name.count(index);
if (ic!=0)
return no_name[index];
else
return "查无此人";
}
};
int main()
{
CStudent cs;
cout<<cs["1001"].c_str()<<endl;
cout<<cs["1004"].c_str()<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 实验报告