📄 vectorstack.h
字号:
/* $Id: VectorStack.h,v 1.2 1997/02/02 01:31:05 matt Exp $ Stack as vector. (c) Matt Phillips Mar 1995. */#ifndef _VSTACK_H#define _VSTACK_H#include "Stack.h"#include "Vector.h"template <class T, class E>class VectorStackImp : public Stack<T>, protected VectorImp<T, E>{public: typedef class VectorStackImpIter<T, E> Iterator; VectorStackImp (int _max) : VectorImp<T, E> (_max) {} const char *name () const {return Stack<T>::name ();} int nItems () const {return VectorImp<T, E>::nItems ();} int isFull () const {return VectorImp<T, E>::isFull ();} int isEmpty () const {return VectorImp<T, E>::isEmpty ();} void clear () {VectorImp<T, E>::clear ();} virtual void push (T &i) { STACK_OVERFLOW (!isFull ()); data [_nItems++].set (i); } virtual void pop () { STACK_UNDERFLOW (!isEmpty ()); data [--_nItems].destroy (); } virtual T &top () const { STACK_UNDERFLOW (!isEmpty ()); return data [_nItems].ref (); } Iterator *makeIter () const {return new Iterator (*this);} friend class Iterator;};template <class T, class E>class VectorStackImpIter : public VectorImpIter<T, E>{public: VectorStackImpIter (const VectorStackImp<T, E> &s) : VectorImpIter<T, E> (s) {}};#define TypeDVectorStack(T) VectorStackImp<T, DCell<T> >#define TypeIVectorStack(T) VectorStackImp<T, ICell<T, 0> >#define TypeIOVectorStack(T) VectorStackImp<T, ICell<T, 1> >#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -