C++ 如何在创建类和类的对象时初始化类内的二维数组

C++ 如何在创建类和类的对象时初始化类内的二维数组,c++,arrays,oop,c++11,C++,Arrays,Oop,C++11,我有一个带有指向指针的私有指针(双指针)的类,我正在使用它创建一个2D数组 class Arr2D{ int **arr; public: Arr2D(int row, int col){ arr = new int*[r]; for(int i = 0; i < row; ++i){ arr[i] = new int[col]; } }

我有一个带有指向指针的私有指针(双指针)的类,我正在使用它创建一个2D数组

class Arr2D{
    int **arr;
    public:
        Arr2D(int row, int col){
            arr = new int*[r];
            for(int i = 0; i < row; ++i){
                arr[i] = new int[col];
            }
        }
}
如何初始化如上所示的数组。

您可以使用。假设你不是在创建一个矩阵,而是一个整数列表。但如果你愿意,你可以把它当作矩阵来处理。请看下面的代码:

# include <iostream>
# include <initializer_list>
# include <vector>

using namespace std;

class Arr2D {
private:
    vector<vector<int>> Arr;

public:
    Arr2D(initializer_list<vector<int>> p) {
        this->Arr = p;
    }

    void Print () {
        for (int i = 0; i < this->Arr.size (); i++) {
            cout << "row " << i << ": [";

            for (int j = 0; j < this->Arr.at (i).size (); j++) {
                cout << this->Arr.at(i).at (j) << " ";
            }

            cout << "]" << endl;
        }
    }
};

int main(int argc, char *argv[]) {
    Arr2D obj {{1, 2, 3}, {4, 5, 6}};

    obj.Print();

    return 0;
}

您当前的代码到底发生了什么?@OmidCompSCI我收到了这个错误:预期为“,”或“;”在“=”之前,A
int**
不是2d数组。数组最重要的特性之一是其元素在内存中是连续的。你在这里试图做的是否定的。使用一维,从
x
y
索引计算线性索引。有什么原因不能只使用std::vector吗?@Abhishek看一看
# include <iostream>
# include <initializer_list>
# include <vector>

using namespace std;

class Arr2D {
private:
    vector<vector<int>> Arr;

public:
    Arr2D(initializer_list<vector<int>> p) {
        this->Arr = p;
    }

    void Print () {
        for (int i = 0; i < this->Arr.size (); i++) {
            cout << "row " << i << ": [";

            for (int j = 0; j < this->Arr.at (i).size (); j++) {
                cout << this->Arr.at(i).at (j) << " ";
            }

            cout << "]" << endl;
        }
    }
};

int main(int argc, char *argv[]) {
    Arr2D obj {{1, 2, 3}, {4, 5, 6}};

    obj.Print();

    return 0;
}
row 0: [1 2 3 ]
row 1: [4 5 6 ]