C++学习之路——名字空间与模板

例题:

把课程当中的函数模板与类模板两个程序自己写一遍并写好注释。

代码如下:

#include "pch.h"
#include<vector>
#include<string>
#include <iostream>

using namespace std;

//模板类
template<class T> class Stack
{
public:
	void pop();		//出栈
	void push(T const&);	//入栈	
	T top();		//返回栈顶
	bool empty()	//如果空  返回真
	{
		return elems.empty();
	}
	
private:
	vector<T> elems;
};

//入栈
template<class T>
void Stack<T>::push(T const &elem)
{
	//元素入栈
	elems.push_back(elem);
}

//出栈	
template<class T>
void Stack<T>::pop()
{
	if (elems.empty())
	{
		cout << "栈为空,不能出栈" << endl;
	}
	elems.pop_back();				//删除最高后一个元素

}

//返回栈顶
template <class T>
T Stack<T>::top()
{
	if (elems.empty())
	{
		cout << "栈为空,不能返回栈顶" << endl;
	}

	return elems.back();
}


template <typename TT>TT Max(TT a, TT b)
{
	return a > b ? a : b;
}
int main()
{
	cout << "模板类部分:" << endl;
	Stack<int> intstack;
	intstack.push(1);
	intstack.push(5);
	intstack.push(6);
	cout << "int的结果为:" << intstack.top() << endl;
	intstack.pop();
	cout << "int的出栈结果为:" << intstack.top() << endl;
	Stack<string> stringstack;
	stringstack.push("李素");
	stringstack.push("赵刚");
	stringstack.push("王伟");
	cout << "string的结果为:" << stringstack.top() << endl;
	stringstack.pop();
	cout << "string出栈的结果为:" << stringstack.top() << endl;

	cout << endl;
	cout << "模板函数部分:" << endl;
	cout << "最大值为:" << Max(1, 222) << endl;
	cout << "最大值为:" << Max(8888, 222) << endl; 
	cout << "最大值为:" << Max("王刚单","老李") << endl;
	return 0;
}

结果如下:
在这里插入图片描述

发布了22 篇原创文章 · 获赞 26 · 访问量 518

猜你喜欢

转载自blog.csdn.net/weixin_45525272/article/details/104286352