array.h
来自「包含各种测试,查找和算法等代码,如冒泡算法,树的遍历,链表,队列,堆栈等」· C头文件 代码 · 共 96 行
H
96 行
template <class T>
class Array
{
private:
T *arr;
int size;
public:
Array(int sz = 100);
Array(const Array<T>& a);
~Array(void);
int Size(void)const;
void operator=(const Array<T>& a);
T& operator[](int i);
void Resize(int sz);
};
template <class T>
Array<T>::Array(int sz)
{
if(sz <= 0)
{
cout << "无效的数组个数" << endl;
exit(0);
}
arr = new T[sz];
size = sz;
}
template <class T>
Array<T>::Array(const Array<T>& a)
{
arr = new T[a.size];
for(int i = 0; i < a.size; i++)
arr[i] = a.arr[i];
size = a.size;
}
template <class T>
Array<T>::~Array(void)
{
delete []arr;
}
template <class T>
int Array<T>::Size(void)const
{
return size;
}
template <class T>
void Array<T>::operator=(const Array<T>& a)
{
delete arr;
arr = new T[a.size];
for(int i = 0; i < a.size; i++)
arr[i] = a.arr[i];
size = a.size;
}
template <class T>
T& Array<T>:: operator[](int i)
{
if(i < 0 || i > size-1)
{
cout << "下标越界" << endl;
exit(0);
}
return arr[i];
}
template <class T>
void Array<T>::Resize(int sz)
{
if(sz <= 0)
{
cout << "无效的数组个数" << endl;
exit(0);
}
if(sz == size) return;
T* newArray = new T[sz];
int n = (sz <= size) ? sz: size;
for(int i = 0; i < n; i++)
newArray[i] = arr[i];
delete []arr;
arr = newArray;
size = sz;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?