2

自从我用 C++ 编程以来已经有一段时间了,但是我有一个小问题,我正在努力解决。

是否可以制作一个 2 x 2 动态数组,其中 1 维不是动态的?

例如

数组[2][动态]?

制作 array[dynamic][dynamic] 似乎是一种浪费,而我只需要使用第一个 [0][dynamic] 和第二个 [1][dynamic] 值。

我应该使用其他数据结构吗?

谢谢。

4

3 回答 3

1

数组和指针基本上是等价的,所以你可以用一个指针数组来实现:

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

您仍然可以像访问多维数组一样访问它:

array[0][x-1] = z;
于 2012-10-24T15:05:53.740 回答
1

这适用于 C++11:

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

或者您可以使用 c 样式的向量数组

std::vector<MyClass> arr[2];
于 2012-10-24T15:27:31.743 回答
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;
}
于 2012-10-24T15:06:47.003 回答