📄 safearr.h
字号:
#include <iostream.h>
#include <stdlib.h>
#include "heads.h"
template<class T>
class Array
{
private:
T* arr;
int size;
void Error(ErrorType errortype,int badIndex = 0) const;
public:
Array(int sz = 100);
Array(const Array<T>& a);
~Array();
Array<T>& operator= (const Array<T>& a);
T& operator[](int i);
int ArraySize() const;
void ReSize(int sz);
};
template<class T>
void Array<T>::Error(ErrorType errortype,int badIndex) const
{
if(badIndex == 0)
cout<<errorMsg[errortype]<<endl;
else
cout<<errorMsg[errortype]<<":"<<badIndex<<endl;
cout<<"returning now!!!"<<endl;
exit(0);
}
template <class T>
Array<T>::Array(int sz)
{
if(sz <= 0)
Error(InvalidArraySize,sz);
size = sz;
arr = new T[size];
if(arr == NULL)
Error(MemoryAllocationError);
}
template <class T>
Array<T>::Array(const Array<T>& a)
{
int n = a.size;
size = n;
arr = new T[size];
if(arr == NULL)
Error(MemoryAllocationError);
T* soucePtr = a.arr;
T* destPtr = arr;
while(n--)
*destPtr++ = *soucePtr++;
}
template <class T>
Array<T>::~Array()
{
delete[] arr;
}
template <class T>
Array<T>& Array<T>::operator =(const Array<T>& a)
{
int n = a.size;
size = n;
arr = new T[size];
if(arr == NULL)
Error(MenoryAlloctionError);
T* soucePtr = a.arr;
T* destPtr = arr;
while(n--)
*destPtr++ = *soucePtr++;
}
template <class T>
T& Array<T>::operator [](int i)
{
if(i < 0 || i > size -1)
Error(IndexOutOfRange,i);
return arr[i];
}
template <class T>
int Array<T>::ArraySize() const
{
return size;
}
template <class T>
void Array<T>::ReSize(int sz)
{
if(sz <= 0)
Error(InvalidArraySize,sz);
if(sz == size) return ;
T* newArray = new T[sz];
if(newArray == NULL)
Error(MemoryAllocationError);
int n = (sz <= size) ? sz : size;
T* soucePtr = arr;
T* destPtr = newArray;
while(n--)
*destPtr++ = *soucePtr++;
delete[] arr;
arr = newArray;
size = sz;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -