C 动态阵列1尺寸非动态

C++ Dynamic Array 1 dimension non dynamic

本文关键字:动态 阵列 1尺      更新时间:2023-10-16

我已经在C 中进行编程了一段时间,但是我有一个小问题,我正在尝试找出。

可以在1个维度不是动态的情况下制作2乘2个动态阵列吗?

例如

array [2] [dynamic]?

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

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

谢谢。

数组和指针基本上是等效的,因此您可以使用一系列指针来实现此目标:

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

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

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

这在C 11中起作用:

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

,或者您可以使用c风格的向量

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

肯定,但必须在第一个维度中动态。

例如,例如

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