您的位置:首页 > 其它

多维动态数组定义及应用

2015-02-05 11:36 155 查看
本文主要介绍:利用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();
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: