C++函数模板类模板

来源:互联网 发布:想在淘宝上开个网店 编辑:程序博客网 时间:2024/05/21 09:03
#include <iostream>#include <string>using namespace std;template <typename T>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;}

类模板

#include <iostream>#include <vector>#include <cstdlib>#include <string>#include <stdexcept>using namespace std;template <class T>class Stack {   private:     vector<T> elems;     // elements   public:     void push(T const&);  // push element     void pop();               // pop element     T top() const;            // return top element     bool empty() const{       // return true if empty.        return elems.empty();     } }; template <class T>void Stack<T>::push (T const& elem) {     // append copy of passed element     elems.push_back(elem);    } template <class T>void Stack<T>::pop () {     if (elems.empty()) {         throw out_of_range("Stack<>::pop(): empty stack");     }    // remove last element     elems.pop_back();         } template <class T>T Stack<T>::top () const {     if (elems.empty()) {         throw out_of_range("Stack<>::top(): empty stack");     }    // return copy of last element     return elems.back();      } int main() {     try {         Stack<int>         intStack;  // stack of ints         Stack<string> stringStack;    // stack of strings         // manipulate int stack         intStack.push(7);         cout << intStack.top() <<endl;         // manipulate string stack         stringStack.push("hello");         cout << stringStack.top() << std::endl;         stringStack.pop();         stringStack.pop();     }     catch (exception const& ex) {         cerr << "Exception: " << ex.what() <<endl;         return -1;    } } 
0 0