vectorstack.h
来自「用于词法分析的词法分析器」· C头文件 代码 · 共 66 行
H
66 行
/* $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 + =
减小字号Ctrl + -
显示快捷键?