⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector.h

📁 用于词法分析的词法分析器
💻 H
字号:
/*  $Id: Vector.h,v 1.2 1997/02/02 01:31:04 matt Exp $  Vector container.  (c) 1995 Matt Phillips  */#ifndef _VECTOR_H#define _VECTOR_H#include "Container.h"#include "Data.h"//////////////////// VectorImptemplate <class T, class E>class VectorImp : public Container<T>{public:  typedef class VectorImpIter<T, E> Iterator;  VectorImp (int _max, int size = 0) :    Container<T> (size), max (_max), data (new E [max])  {    CHECK (size <= max, "init size exceeds bounds");  }  ~VectorImp () {clear (); delete data;}     virtual const char *name () const {return "Vector";}  virtual int isFull () const {return _nItems == max;}  virtual void add (T &i)  {    CHECK (_nItems < max, "overflow");    data [_nItems++].set (i);  }  virtual void clear ();  T & operator [] (int i) const  {    CHECK (i >= 0 && i < _nItems, "index out of bounds");    return data [i].ref ();  }  Iterator *makeIter () const {return new Iterator (*this);}protected:  friend class Iterator;  int max;  E *data;};#pragma option -wrch- -wccc-	// (Borland C++) turn off warnings for if stmttemplate <class T, class E>void VectorImp<T, E>::clear () {  if (E::isOwner ())  {    for (int c = 0; c < _nItems; c++)      data [c].destroy ();  }  _nItems = 0;}#pragma option -wrch. -wccc.	// reset defaultstemplate <class T, class E>class VectorImpIter : public RContainerIter<T>{public:  VectorImpIter (const VectorImp<T, E> &v) : vector (v), i (v.data) {}  virtual T value () const  {ITER_CURRENT (int (*this)); return i->ref ();}  virtual T &ref () const  {ITER_CURRENT (int (*this)); return i->ref ();}  virtual void operator ++ (int)  {ITER_BOUND (i < vector.data + vector._nItems); i++;}  virtual void operator -- (int)  {ITER_BOUND (i > vector.data); i--;}  virtual operator int () const  {return i >= vector.data && i < vector.data + vector._nItems;}  virtual void resetStart () {i = vector.data;}  virtual void resetEnd () {i = vector.data + vector._nItems - 1;}protected:  E *i;  const VectorImp<T, E> &vector;};#define TypeDVector(T)  VectorImp<T, DCell<T> >#define TypeIVector(T)  VectorImp<T, ICell<T, 0> >#define TypeIOVector(T) VectorImp<T, ICell<T, 1> >#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -