2013-11-04 99 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}}); 
    } 
};