成员模板2
来源:互联网 发布:日历js脚本 编辑:程序博客网 时间:2024/06/01 07:35
#include <iostream>#include <deque>#include <vector>#include <stdexcept>using namespace std;template <typename T, typename CONT = std::deque<T>>class Stack{private:CONT elems; // elementspublic:void push(T const&); // push elementvoid pop(); // pop elementT top() const; // return top elementbool empty() const { // return whether the stack is emptyreturn elems.empty();}// assign stack of elements of type T2template <typename T2, typename CONT2>Stack<T, CONT>& operator= (Stack<T2, CONT2> const&);};template <typename T, typename CONT>void Stack<T, CONT>::push(T const& elem){elems.push_back(elem); // append copy of passed elem}template<typename T, typename CONT>void Stack<T, CONT>::pop(){if (elems.empty()) {throw std::out_of_range("Stack<>::pop(): empty stack");}elems.pop_back(); // remove last element}template <typename T, typename CONT>T Stack<T, CONT>::top() const{if (elems.empty()){throw std::out_of_range("Stack<>::top(): empty stack");}return elems.back(); // return copy of last element}template <typename T, typename CONT>template <typename T2, typename CONT2>Stack<T, CONT>&Stack<T, CONT>::operator= (Stack<T2, CONT2> const& op2){if ((void*)this == (void*)&op2) // assignment to itself?{ return *this;}Stack<T2, CONT2> tmp(op2); // create a copy of the assigned stackelems.clear(); // remove existing elementswhile (!tmp.empty()) // copy all elements{ elems.push_front(tmp.top());tmp.pop();}return *this;}int main(){try {Stack<int> intStack; // stack of intsStack<float> floatStack; // stack of floats// manipulate int stackintStack.push(42);intStack.push(7);// manipulate float stackfloatStack.push(7.7);// assign stacks of different typefloatStack = intStack;// print float stackstd::cout << floatStack.top() << std::endl;floatStack.pop();std::cout << floatStack.top() << std::endl;floatStack.pop();std::cout << floatStack.top() << std::endl;floatStack.pop();}catch (std::exception const& ex) {std::cerr << "Exception: " << ex.what() << std::endl;}// stack for ints using a vector as an internal containerStack<int, std::vector<int> > vStack;//...vStack.push(42);vStack.push(7);std::cout << vStack.top() << std::endl;vStack.pop();return 0;}
0 0
- 成员模板2
- 成员模板
- 成员模板
- 成员模板
- 成员模板
- 成员模板,模板类做类成员
- 两个成员的类模板2
- -两个成员的类模板(2)
- 两个成员的类模板2
- 项目2-两个成员的类模板
- 两个成员的类模板2
- C++primer学习:类模板(2)类模板:模板参数,成员模板和控制实例化
- 成员模板和参数模板
- c++ template - 成员模板
- 成员模板问题
- 静态成员和模板
- 成员函数模板
- 成员模板(member template)
- 关于dsp中的bootmode资料
- 使用HttpURLConnection和使用HttpClient方式请求网络采用get方式和post方式请求数据
- uva 348 Optimal Array Multiplication Sequence
- (三)线程同步工具集_2---控制并发访问资源的多个副本
- 实现push pop min皆为O(1)的栈
- 成员模板2
- 更改servlet插件自动生成的内容
- 【Leetcode】Roman to Integer JAVA
- servlet生命周期
- MAC下解决访问本地JSP页面500和404问题
- hdu1243
- 程序性能分析及性能测试
- 解决android帮助文档打开慢
- Java 正则表达式详解