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

📄 array.hpp

📁 source code for unrar3.3.4,uppack the .rar files,for multi-os
💻 HPP
字号:
#ifndef _RAR_ARRAY_#define _RAR_ARRAY_extern ErrorHandler ErrHandler;template <class T> class Array{  private:    T *Buffer;    int BufSize;    int AllocSize;  public:    Array();    Array(int Size);    ~Array();    inline void CleanData();    inline T& operator [](int Item);    inline int Size();    void Add(int Items);    void Alloc(int Items);    void Reset();    void operator = (Array<T> &Src);    void Push(T Item);};template <class T> void Array<T>::CleanData(){  Buffer=NULL;  BufSize=0;  AllocSize=0;}template <class T> Array<T>::Array(){  CleanData();}template <class T> Array<T>::Array(int Size){  Buffer=(T *)rarmalloc(sizeof(T)*Size);  if (Buffer==NULL && Size!=0)    ErrHandler.MemoryError();  AllocSize=BufSize=Size;}template <class T> Array<T>::~Array(){  if (Buffer!=NULL)    rarfree(Buffer);}template <class T> inline T& Array<T>::operator [](int Item){  return(Buffer[Item]);}template <class T> inline int Array<T>::Size(){  return(BufSize);}template <class T> void Array<T>::Add(int Items){  BufSize+=Items;  if (BufSize>AllocSize)  {    int Suggested=AllocSize+AllocSize/4+32;    int NewSize=Max(BufSize,Suggested);    Buffer=(T *)rarrealloc(Buffer,NewSize*sizeof(T));    if (Buffer==NULL)      ErrHandler.MemoryError();    AllocSize=NewSize;  }}template <class T> void Array<T>::Alloc(int Items){  if (Items>AllocSize)    Add(Items-BufSize);  else    BufSize=Items;}template <class T> void Array<T>::Reset(){  if (Buffer!=NULL)  {    rarfree(Buffer);    Buffer=NULL;  }  BufSize=0;  AllocSize=0;}template <class T> void Array<T>::operator =(Array<T> &Src){  Reset();  Alloc(Src.BufSize);  if (Src.BufSize!=0)    memcpy((void *)Buffer,(void *)Src.Buffer,Src.BufSize*sizeof(T));}template <class T> void Array<T>::Push(T Item){  Add(1);  (*this)[Size()-1]=Item;}#endif

⌨️ 快捷键说明

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