自从我使用C ++进行编程以来已经有一段时间了但是我有一个小问题,我正在试图解决。
是否可以制作2乘2动态数组,其中1维不是动态的?
例如
阵列[2] [动态]
制作数组[动态] [动态]似乎是浪费,当我只需要使用第一个[0] [动态]和第二个[1] [动态]值时。
我应该使用其他数据结构吗?
感谢。
答案 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;
}