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

📄 safearr.h

📁 这是一个自己设计的安全数组类 小弟是刚刚入门的 只能做小的
💻 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 + -