一、缺省模板参数
回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下:
template <typename T, typename CONT = std::deque<T> >
class Stack
{
…
private:
CONT c_;
};
如果没有传第二个参数,默认为deque 双端队列,当然我们也可以传递std::vector<T>
下面程序借助标准模板容器管理内存来实现stack模板类:
Stack.h:
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#ifndef _STACK_H_
#define _STACK_H_ #include <exception> #include <deque> using namespace std; template < typename T, typename CONT = deque<T> > class Stack { public: Stack() : c_() { } ~Stack() { } void Push( const T &elem) { c_.push_back(elem); } void Pop() { c_.pop_back(); } T &Top() { return c_.back(); } const T &Top() const { return c_.back(); } bool Empty() const { return c_.empty(); } private: CONT c_; }; #endif // _STACK_H_ |
main.cpp:
C++ Code