c++模板类&&模板函数

来源:互联网 发布:聂士成 知乎 编辑:程序博客网 时间:2024/06/08 03:33

模板函数:

template <typename T>

func()


模板类:

template <class T>

class ClassName{

public:

void add(T a){

}

}

template <class T>

void ClassName<T>::add(T a){

}


#include #include #include #include #include using namespace std;/*** Template Function*//*template inline T const& Max(T const& a, T const& b){return a < b ? b : a;}int main(){int i = 39;int j = 20;cout << "Max(i, j):" << Max(i, j) << endl;double f1 = 13.5;double f2 = 20.7;cout << "Max(f1, f2):" << Max(f1, f2) << endl;string s1 = "Hello";string s2 = "World";cout << "Max(s1, s2):" << Max(s1, s2) << endl;return 0;}*//*Template Class*/template class Stack{private:vector elems;public:void push(T const&);void pop();T top() const;//constant function do not change the variable member's valuebool empty() const{return elems.empty();}int depth(){return elems.size();}};template void Stack::push(T const& elem){elems.push_back(elem);}template void Stack::pop(){if (elems.empty()){throw out_of_range("Stack<>::pop():empty");}elems.pop_back();}template T Stack::top() const{if (elems.empty()){throw out_of_range("Stack<>::pop():empty");}return elems.back();}int main(){try{Stack intStack;Stack stringStack;intStack.push(7);cout << intStack.top() << endl;cout << "intStack size " << intStack.depth() << endl;stringStack.push("hello");stringStack.push("hi");cout << stringStack.top() << std::endl;cout << "stringStack size " << stringStack.depth() << endl;stringStack.pop();cout << "Pop stringStack size " << stringStack.depth() << endl;stringStack.pop();cout << "Pop stringStack size " << stringStack.depth() << endl;stringStack.pop();}catch (exception const& ex){cerr << "Exception:" << ex.what() << endl;return -1;}}

0 0