C++ 模板

来源:互联网 发布:付费网络调查 编辑:程序博客网 时间:2024/05/18 09:20
函数模板template <typename T>inline T const& Max (T const& a, T const& b) {     return a < b ? b:a; } ---------------------------------------------------------------------------------------------------------类模板#include <iostream>#include <vector>#include <cstdlib>#include <string>#include <stdexcept>using namespace std;template <class T>class Stack {  private:    vector<T> elems;     // 元素  public:    void push(T const&);  // 入栈    void pop();               // 出栈    T top() const;            // 返回栈顶元素    bool empty() const{       // 如果为空则返回真。        return elems.empty();    }};template <class T> void Stack<T>::push (T const& elem){    // 追加传入元素的副本    elems.push_back(elem);}template <class T> void Stack<T>::pop (){    if (elems.empty()) {        throw out_of_range("Stack<>::pop(): empty stack");    }// 删除最后一个元素    elems.pop_back();}template <class T> T Stack<T>::top () const{    if (elems.empty()) {        throw out_of_range("Stack<>::top(): empty stack");    }// 返回最后一个元素的副本    return elems.back();}int main(){    try {        Stack<int>         intStack;  // int 类型的栈        Stack<string> stringStack;    // string 类型的栈        // 操作 int 类型的栈        intStack.push(7);        cout << intStack.top() <<endl;        // 操作 string 类型的栈        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
原创粉丝点击