用C ++声明2d数组

时间:2014-03-26 10:54:08

标签: c++ arrays 2d new-operator

嘿所以我想在我的一个类中声明一个2d数组 - 它首先在任何方法之外声明,然后通过构造函数设置大小

class xxx
int **triangle;


constructor(int n){
    triangle = new int *[n+1];
    for(int i=0;i<=n; i++) triangle[i]=new int[i+1];
}

但构造函数的第一行不起作用:

 error: incompatible types in assignment of ‘int**’ to ‘int* [0]’

NVM它已修复 - 我把int * triangle [];在我的头文件中..浪费了40分钟:D

2 个答案:

答案 0 :(得分:3)

int constructor(int n)
{
    int** triangle = new int*[n + 1];
    for(int i = 0; i <= n; ++i)
        triangle[i] = new int[i + 1];
}

答案 1 :(得分:0)

替代解决方案

使用 std :: vector 而不是原始指针声明 2D 数组

n x n矩阵:

 std::vector<std::vector<int> >  triangle( n, std::vector<int>(n, 0) );

行x col矩阵

 std::vector<std::vector<int> >  triangle( row, std::vector<int>(col, 0) );

注意:使用std :: vector的2d数组都被初始化为0。