自从我用 C++ 编程以来已经有一段时间了,但是我有一个小问题,我正在努力解决。
是否可以制作一个 2 x 2 动态数组,其中 1 维不是动态的?
例如
数组[2][动态]?
制作 array[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;
}