多维动态数组定义及应用

本文主要介绍:利用CArray实现多维动态数组的定义、赋值和读取。

说明:在定义数组和开辟缓存时,如果数组或缓存大小,则可以直接定义或用new开辟,当不知道大小时,此时要借助于栈、队列等,动态的添加或删除。一维动态数组或缓存开辟较简单,所以这里主要介绍二维动态数组的定义及应用。

一、定义CArray导出类

将定义的导出类放到.h文件中:

template <class TYPE, class ARG_TYPE>
class UltraCArray_T : public CArray <TYPE, ARG_TYPE>
{
public:
	UltraCArray_T();
	UltraCArray_T(const UltraCArray_T &rhs);

	UltraCArray_T &operator =(const UltraCArray_T &rhs);
};

template <class TYPE, class ARG_TYPE>
inline UltraCArray_T<TYPE, ARG_TYPE> &
UltraCArray_T<TYPE, ARG_TYPE>::operator =(const UltraCArray_T &rhs)
{
	if(this != &rhs)
	{
		Copy(rhs);
	}
	
	return *this;
}

template <class TYPE, class ARG_TYPE>
inline UltraCArray_T<TYPE, ARG_TYPE>::UltraCArray_T()
{
}

template <class TYPE, class ARG_TYPE>
inline
UltraCArray_T<TYPE, ARG_TYPE>::UltraCArray_T(const UltraCArray_T &rhs)
{
	*this = rhs;
}
二、导出类应用

void main()
{
    //数组定义
	typedef UltraCArray_T<int , int&>DA1;//一维动态数组
	typedef UltraCArray_T<DA1 , DA1&>DA2;//二维动态数组
	DA1 aa1;
	DA2 aa2;

	//二维数组赋值
	aa1.RemoveAll();
	for(int i=0;i<10;i++)  //一维数组赋值
		aa1.Add(i);

	aa2.Add(aa1); //添加到二维数组

	aa1.RemoveAll();
	for(int i=10;i<20;i++) //一维数组赋值
		aa1.Add(i);

	aa2.Add(aa1);  //添加到二维数组

	//二维数组读取
	int Size = aa2.GetSize();
	for(int i=0;i<Size;i++)
	{
		aa1.RemoveAll();
		aa1 = aa2.GetAt(i);
		for(int j=0; j<aa1.GetSize();j++)
			cout<<aa1.GetAt(j)<<"  ";

		cout<<"\n";//换行

	}

	_getch();
}

运行结果:

多维动态数组定义及应用_第1张图片


你可能感兴趣的:(CArray,多维动态数组,不知道数组长度,UltraCArray_T)