2012-10-24 105 views
2

由於我用C++進行了編程,所以過了一段時間,但是我有一個小問題,我試圖弄清楚。C++動態數組1維非動態

是否有可能創建一個2×2的動態數組,其中1維不是動態的?

例如

array [2] [Dynamic]?

當我只需要使用第一個[動態]和第二個[動態]值時,使數組[動態] [動態]看起來很浪費。

我應該使用另一個數據結構嗎?

謝謝。

回答

1

數組和指針基本上是相等的,所以你可以用一個指針數組實現這一目標:

int* array[2]; 
array[0] = new int[x]; 
array[1] = new int[y]; 

,您仍然可以訪問它,你會多維數組:

array[0][x-1] = z; 
0

肯定,但它在第一個維度必須是動態的。

像這樣的實例

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; 
} 
1

這個工作在C++ 11:

std::array<std::vector<MyClass>,2> arr; 

或者你可以使用向量的C數組

std::vector<MyClass> arr[2];