2

我想将二维数组的值初始化为 0。但它似乎不起作用。我可以在构造函数中将我的 **array 的值初始化为 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,我将如何处理内存分配。

4

3 回答 3

2

你可能想要array[i][j]=0;. 你为什么使用chartype '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.

于 2012-11-28T05:39:20.413 回答
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 >= 数组 array[i] 指向的大小。在我们的大多数用例中,我们让它们相等。

于 2012-11-28T05:53:11.400 回答
0

你可以尝试这样的事情: -

class A
{
 public:
 A():my2DArray() {0}
 private:
 B* my2DArray[max1][max2];
 };
于 2012-11-28T05:36:42.720 回答