我想将2-D数组的值初始化为0.但似乎无法正常工作。 我可以将构造函数中我的**数组的值初始化为0.如果是,那么如何。 我的代码是。
#include <iostream>
using namespace std;
int main(){
int row, col;
cin>>row;
cin>>col;
int **array=new int*[row];
for (int i=0; i<row; i++){
array[i]=new int[col];
}
for (int i=0; i<row;i++){
for (int j=0; j<col; j++){
array[i][j]={'0'};
cout<<array[i][j]<<" ";
}
cout<<endl;
}
}
进一步有人可以解释我是否必须用其他元素替换数组中的ith elem,我将如何处理内存分配。
答案 0 :(得分:2)
你可能想要array[i][j]=0;
。您为什么使用char
类型'0'
?
但是,有一种更简单的方法:array[i]=new int[col]();
,只需将()
添加到值初始化每列。
还有一种更好的方法:
std::vector<std::vector<int>> array(row, std::vector<int>(col));
对于您的第一个评论,您需要创建一个具有新大小的新数组,复制所有数据,并删除旧的二维数组。
对于您的第二条评论,这是一个例子:
struct A
{
int **array;
A(int row, int col) : array(new int*[row])
{
for (int i=0; i < row; i++)
{
array[i]=new int[col]();
}
}
};
PS:使用std::vector
可以为自己节省大量工作。
答案 1 :(得分:1)
此代码适用于gcc
#include <iostream>
using namespace std;
int main(){
int row, col;
cin>>row;
cin>>col;
int **array=new int*[row];
for (int i=0; i<row; i++){
array[i]=new int[col];
}
for (int i=0; i<row;i++){
for (int j=0; j<col; j++){
array[i][j]=0;
cout<<array[i][j]<<" ";
}
cout<<endl;
}
}
用一些其他元素替换数组的第i个元素我们可以做一些lyk
int *aa = new int[p];
swap(array[i], aa)
但为了使其在逻辑上正确工作,你需要确保p> = =数组数组[i]的大小指向。在我们的大多数用例中,我们都使用它们。
答案 2 :(得分:0)
您可以尝试这样的事情: -
class A
{
public:
A():my2DArray() {0}
private:
B* my2DArray[max1][max2];
};