📄 array.cpp
字号:
#include <iostream.h>
#include <stdlib.h>
enum ErrorType{InvalidArraySize,MemoryAllocationError,IndexOutOfRange};
char *errorMsg[] = {"Invalid Array Size", "Memory Allocation Error", "Index Out Of Range"};
template <class T> class Array
{
private:
T* list;
int size;
void Error(ErrorType , int badIndex = 0)const;
public:
Array(int sz = 100);
Array(const Array<T>& a);
~Array(void);
Array<T>& operator=(const Array<T>& a);
T& operator[](int i);
operator T*(void)const;
int ListSize(void)const;
void Resize(int sz);
};
template <class T>
void Array<T>::Error(ErrorType errorComm, int badIndex)const
{
cout << errorMsg[errorComm] << endl;
}
template <class T>
Array<T>::Array(int sz)
{
if(sz <= 0) Error(InvalidArraySize);
size = sz;
list = new T[size];
if(list == NULL) Error(MemoryAllocationError);
}
template <class T>
Array<T>::~Array(void)
{
delete []list;
}
template <class T>
Array<T>::Array(const Array<T>& a)
{
int n = a.size;
size = n;
list = new T[size];
if(list == NULL) Error(MemoryAllocationError);
T* soucePtr = a.list;
T* destPtr = list;
while(n--)
*destPtr++ = *soucePtr++;
}
template <class T>
Array<T>& Array<T>::operator=(const Array<T>& a)
{
int n = a.size;
size = n;
list = new T[size];
if(list == NULL) Error(MemoryAllocationError);
T* soucePtr = a.list;
T* destPtr = list;
while(n--)
*destPtr++ = *soucePtr++;
}
template <class T>
T& Array<T>:: operator[](int i)
{
if(i < 0 || i > size-1)
Error(IndexOutOfRange, i);
return list[i];
}
template <class T>
Array<T>:: operator T*(void)const
{
return list;
}
template <class T>
int Array<T>::ListSize(void)const
{
return size;
}
template <class T>
void Array<T>::Resize(int sz)
{
if(sz <= 0) Error(InvalidArraySize);
if(sz == size) return;
T* newList = new T[sz];
if(newList == NULL) Error(MemoryAllocationError);
int n = (sz <= size) ? sz: size;
T* soucePtr = list;
T* destPtr = newList;
while(n--)
*destPtr++ = *soucePtr++;
delete []list;
list = newList;
size = sz;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -