-2
可能重複:
How do I best handle dynamic multi-dimensional arrays in C/C++?在C動態地初始化多維數組++
我開發的應用程序。在那我需要動態地聲明多維數組。與動態數組大小和值我想屁股它。請幫助我解決這個問題。
高級謝謝
可能重複:
How do I best handle dynamic multi-dimensional arrays in C/C++?在C動態地初始化多維數組++
我開發的應用程序。在那我需要動態地聲明多維數組。與動態數組大小和值我想屁股它。請幫助我解決這個問題。
高級謝謝
這取決於您希望如何「動態」。
一種方式來做到這一點是:
const size_t outerSize = 15;
const size_t innerSize = 20;
int* arr = new int[outerSize * innerSize];
// To access an item, multiply the row index by the "width", and add the column index
arr[innerSize * 5 + 7] = 13;
// When done with the array:
delete[] arr;
這種解決方案的問題是,你必須要非常小心,以確保您撥打delete[] array;
,即使異常被拋出。
如果你不想擔心內存管理,你可以注意不要使鋸齒形陣列(或都還好用交錯數組),那麼你可以使用:
std::vector<std::vector<YourType> >
你可以
const size_t outerSize = 15;
const size_t innerSize = 20;
std::vector<YourType> initalRow(innerSize);
std::vector<std::vector<YourType> > multiDimArray(outerSize, initalRow);
你也可以用默認的預先填充值初始化:
const size_t outerSize = 15;
const size_t innerSize = 20;
YourType initialValue;
initialValue.ExampleValue = 7;
std::vector<YourType> initalRow(innerSize, initialValue);
std::vector<std::vector<YourType> > multiDimArray(outerSize, initalRow);
與特定的大小這樣的初始化
就像任何多維數組,填充它是要在兩個循環的最簡單的方法:
const size_t outerSize = 15;
const size_t innerSize = 20;
std::vector<YourType> initalRow(innerSize);
std::vector<std::vector<YourType> > multiDimArray(outerSize, initalRow);
for(size_t i = 0; i < outerSize; ++i)
{
for(size_t j = 0; j < innerSize; ++j)
{
multiDimArray[i][j].ExampleValue = i * j;
}
}
使用[boost.multi_array](http://www.boost.org/doc/libs /1_47_0/libs/multi_array/doc/index.html)。 –
顯示目前爲止您的代碼,以便我們看到您正在處理的內容。 –