例题:
把课程当中的函数模板与类模板两个程序自己写一遍并写好注释。
代码如下:
#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; }
结果如下: