一个异质堆栈模板.
来源:互联网 发布:网络课程平台 编辑:程序博客网 时间:2024/04/27 16:05
#ifndef STACK_H
#define STACK_H
#include <deque>
using namespace std;
template <typename T ,
template <typename ELEM , typename = std::allocator<ELEM> > class CONT = std::deque >
class Stack
{
private:
CONT<T> elems ;
public:
void push(T const&);
void pop();
T top() const;
bool empty() const
{ return elems.empty(); }
template <typename T2 ,
template<typename ELEM2 ,
typename = std::allocator<ELEM2> > class CONT2 >
Stack<T2 , CONT2>& operator = (Stack<T2 , CONT2> const&) ;
};
template <typename T ,
template<typename , typename> class CONT>
void Stack<T , CONT>::push(T const& elem)
{
elems.push_back(elem);
}
template <typename T ,
template<typename , typename> class CONT >
void Stack<T , CONT>::pop()
{
if(elems.empty())
{
throw std::out_of_range("Stack<>::pop(): empty stack");
}
elems.pop_back();
}
template <typename T ,
template<typename , typename> class CONT >
T Stack<T , CONT>::top() const
{
if(elems.empty())
{
throw std::out_of_range("Stack<>::top(): empty stack");
}
return elems.back();
}
/*template <typename T ,
template <typename , typename> class CONT >*/
template<typename T2 ,
template <typename , typename> class CONT2> Stack<T2 , CONT2>&
Stack<T , CONT>::operator = (Stack<T2 , CONT2> const& op2 )
{
if((void *)this == (void *)&op2)
return *this;
Stack<T2 , CONT2> tep(op2);
elems.clear();
while(!tmp.empty())
{
elems.push_front(tmp.top());
tmp.pop();
}
return *this;
}
#endif
- 一个异质堆栈模板.
- 模板堆栈
- 堆栈模板
- 类模板实现堆栈
- C++ 堆栈模板
- C++模板堆栈类
- 堆栈类模板
- 模板类实现堆栈:
- 堆栈的基本功能模板
- c++堆栈类模板实现
- 设计一个堆栈类
- 一个堆栈,一个表达式计算器
- 用模板写的堆栈类
- 堆栈类模板的创建和使用
- C++数组实现队列、堆栈、模板类
- (C++)堆栈的类模板
- 一个堆栈模块的接口
- 一个堆栈溢出的例子
- 《转换指南: 将程序从托管扩展C++迁移到C++/CLI》译后记
- Using managed reference types in C++
- 购买MP3必备资料 各大芯片方案齐齐数
- 历代CPU最全明细参数表
- 关于RSS技术 和应用
- 一个异质堆栈模板.
- 46个不可不知的生活小常识
- C++书藉大全
- 接Unicode及编码处理心得
- 关于isinstance使用(节选)
- 大象要结婚了
- 哈哈
- 用高斯消元法求M行N列的方程(含N个未知数,N个方程)的解
- 楼市将遭遇致命一击