由於我用C++進行了編程,所以過了一段時間,但是我有一個小問題,我試圖弄清楚。C++動態數組1維非動態
是否有可能創建一個2×2的動態數組,其中1維不是動態的?
例如
array [2] [Dynamic]?
當我只需要使用第一個[動態]和第二個[動態]值時,使數組[動態] [動態]看起來很浪費。
我應該使用另一個數據結構嗎?
謝謝。
由於我用C++進行了編程,所以過了一段時間,但是我有一個小問題,我試圖弄清楚。C++動態數組1維非動態
是否有可能創建一個2×2的動態數組,其中1維不是動態的?
例如
array [2] [Dynamic]?
當我只需要使用第一個[動態]和第二個[動態]值時,使數組[動態] [動態]看起來很浪費。
我應該使用另一個數據結構嗎?
謝謝。
數組和指針基本上是相等的,所以你可以用一個指針數組實現這一目標:
int* array[2];
array[0] = new int[x];
array[1] = new int[y];
,您仍然可以訪問它,你會多維數組:
array[0][x-1] = z;
肯定,但它在第一個維度必須是動態的。
像這樣的實例
typedef int two_int_array[2];
two_int_array* a = new two_int_array[n];
for (int i = 0; i < n; ++i)
{
a[i][0] = 1;
a[i][1] = 2;
}
當然一般的更好的辦法是使用向量。既然你不能有一個數組的向量,結構向量可能會更適合你的情況。
struct two_int_struct
{
int value[2];
};
std::vector<two_int_struct> a(n);
for (int i = 0; i < n; ++i)
{
a[i].value[0] = 1;
a[i].value[1] = 2;
}
這個工作在C++ 11:
std::array<std::vector<MyClass>,2> arr;
或者你可以使用向量的C數組
std::vector<MyClass> arr[2];