C++二维数组赋值
定义了一个类template<typenameT>classblock{intM;intN;T**arr;}本意是想定义一个大小可控制的二维数组arr[M][N],如何利...
定义了一个类 template<typename T>
class block{
int M;
int N;
T **arr;
}
本意是想定义一个大小可控制的二维数组arr[M][N],如何利用构造函数对这个数组进行赋值呢?或者有其他可以通过类定义任意大小的二维数组的方法么,请教。。。。 展开
class block{
int M;
int N;
T **arr;
}
本意是想定义一个大小可控制的二维数组arr[M][N],如何利用构造函数对这个数组进行赋值呢?或者有其他可以通过类定义任意大小的二维数组的方法么,请教。。。。 展开
4个回答
展开全部
动态分配内存
template<typename T> block::block(int m,int n)
{
int i;
M=m;
N=n;
arr=new T*[m];
for(i=0;i<m;i++)
arr[i]=new T[n];
}
生成对象时,直接传入M,N的值就行了。
template<typename T> block::block(int m,int n)
{
int i;
M=m;
N=n;
arr=new T*[m];
for(i=0;i<m;i++)
arr[i]=new T[n];
}
生成对象时,直接传入M,N的值就行了。
更多追问追答
追问
我的目的是想将主函数中的一个已赋值的二维数组传给**arr,不仅仅是确定二维数组的大小啊,构造函数不应该是三个变量 block::block(int m,int n, T array[][])或怎样的么
追答
哦,你想构造同时给生成的二维数组元素赋值是吧?
template block::block(int m,int n,T **ar)
{
int i,j;
M=m;
N=n;
arr=new T*[m];
for(i=0;i<m;i++)
arr[i]=new T[n];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
arr[i][j]=ar[i][j]; //直接赋值就行了。当然你的ar类型要匹配好。
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用for语句循环赋值 或者逐个赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你发个链接,这里边说的很清楚http://www.cnblogs.com/bigshow/archive/2009/01/03/1367661.html
另外其中哪一种方法,都可以在构造函数里,分配空间后通过arr[i][j]进行赋值
另外其中哪一种方法,都可以在构造函数里,分配空间后通过arr[i][j]进行赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询