您的位置:首页 > 其它

栈template

2016-05-11 15:11 281 查看
#ifndef __INCLUDE_STACK_H__
#define __INCLUDE_STACK_H__

#include <iostream>
#include <exception>
#include <string.h>
#include <stdexcept>
#include <queue>
using namespace std;

template<typename T,typename CONT = deque<T> >
class Stack
{
public:
Stack();
~Stack();
void Push(const T &elem);
void Pop();
T & Top ();
const T & Top() const;
bool Empty() const ;
private:
CONT c_;
};

template<typename T,typename CONT>
Stack<T,CONT>::Stack()
{

}

template<typename T,typename CONT>
Stack<T,CONT>::~Stack()
{

}

template<typename T,typename CONT>
void Stack<T,CONT>::Push(const T &elem)
{
c_.push_back(elem);
}

template<typename T,typename CONT>
void Stack<T,CONT>::Pop()
{
c_.pop_back();
}

template<typename T,typename CONT>
T & Stack<T,CONT>::Top()
{
return c_.back();
}

template<typename T,typename CONT>
const T &Stack<T,CONT>::Top() const
{
return c_.back();
}

template<typename T,typename CONT>
bool Stack<T,CONT>::Empty() const
{
return c_.empty();
}
#endif //__INCLUDE_STACK_H__
#include <iostream>
#include "Stack2.h"
using namespace std;

int main()
{
try
{
Stack<int,vector<int> > s;
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
s.Push(5);
while( !s.Empty())
{
cout<<s.Top()<<endl;
s.Pop();
}
}
catch (out_of_range &oor)
{
cout<<"Out ofRange error:"<<oor.what()<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: