C ++动态数组1维非动态

时间:2012-10-24 15:02:44

标签: c++ arrays dynamic

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

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

例如

阵列[2] [动态]

制作数组[动态] [动态]似乎是浪费,当我只需要使用第一个[0] [动态]和第二个[1] [动态]值时。

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

感谢。

3 个答案:

答案 0 :(得分:1)

数组和指针基本相同,所以你可以通过指针数组来实现这个:

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

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

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

答案 1 :(得分:1)

这适用于C ++ 11:

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

或者你可以使用c风格的矢量数组

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

答案 2 :(得分: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;
}