095-C++

来源:互联网 发布:java开发框架课程设计 编辑:程序博客网 时间:2024/06/06 16:57

类模版

#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;    } }