2013-11-04 64 views
0

我想要手动设置作为类成员的二维数组的值。主要是因为我已经用不同的方法用循环填充它,但是用另一种方法我想用手填充它。使用来自类成员的指针初始化2D数组?

class SomeClass { 
private: 
    int** myArray; 
public: 
    void setMyArray(int /*h*/,int /*w*/); 
} 

void SomeClass::setMyArray() { 
// Something like this: 
this->myArray** = { {1,2,3},{3,2,1},{4,5,6}}; 

} 

失败的是,有没有办法产生其尺寸,然后手动填充?

void SomeClass::setMyArray(int height, int width) { 
// Something like this: 
this->myArray** = new*int[height]; 
for (0...height, i) { 
    this->myArray[i] = new[width]; 
} 

    myArray** = {{1,2,3},{1,2,3},{1,2,3}}; 

} 
+2

可以初始化数组一样的是,就在你正在声明数组。 – deepmax

+0

这并不完全回答我的问题,请您澄清一下?我如何在我的设置中声明数组,让我手动摆弄这些值? – RaenirSalazar

+0

您可以仅在声明点初始化(通过分配)纯数组。您以后只能通过分配给每个元素来填充数组,而不是分配“整个”。这和成千上万的其他原因是为什么你应该不惜一切代价避免它们。 –

回答

1

避免裸指针:

vector<vector<int>> myArray {{1,2,3},{1,2,3},{1,2,3}}; 

你甚至可以在以后插入初始化列表并重新写你的类象下面这样:

class SomeClass 
{ 
    vector<vector<int>> myArray; 
public: 
    void setMyArray() 
    { 
     myArray.insert(myArray.end(), {{1,2,3},{1,2,3},{1,2,3}}); 
    } 
};