如果我有多个相同数据类型的数组,将它们全部复制到二维数组中的最佳方法是什么。例如
int array1[] = {1,2,3,4,5,6,7,8,9,10};
int array2[] = {9,8,7,6,5,4,3,2,1,0};
int array2d[][];
//pseudo code array2d = array1 + array2
这样
array2d[0][0]; //=1 (first member of array1)
array2d[1][0]; //=9 (first member of array2)
考虑到数组只是指向第一个元素的指针,我想我可以这样做,但它会产生编译器错误。
array2d[0][0] = array1;
array2d[1][0] = array2;
我猜我不能使用引用进行复制,因为数组需要它的条目在连续的内存中?有没有我可以使用的类似函数的内存集?
最佳答案
不可能。您需要逐个元素地从一个数组复制到另一个数组。
您还可以使用指向整数数组的指针数组模拟二维数组。
int array1[] = {1,2,3,4,5,6,7,8,9,10};
int array2[] = {9,8,7,6,5,4,3,2,1,0};
int *array2d[2];
array2d[0] = array1;
array2d[1] = array2;
或者这个
int array1[] = {1,2,3,4,5,6,7,8,9,10};
int array2[] = {9,8,7,6,5,4,3,2,1,0};
int *array2d[] = {array1, array2};
cout << "[0][0]=" << array2d[0][0] << endl;
cout << "[1][0]=" << array2d[1][0] << endl;
或反转
如果您的目标是将二维数组呈现给某些 API,那么您应该重构您的这一端。例如,您可以使用指针模拟一维数组:
// an ampty array
int array2d[2][10];
// pointers to parts
int *array1 = array2d[0];
int *array2 = array2d[1];
int n;
// fill "arrays"
for(int i=0, n=1; i<10; ++i, ++n) {
array1[i] = n;
}
for(int i=0, n=9; i<10; ++i, --n) {
array2[i] = n;
}
// now you are ready
cout << "[0][0]=" << array2d[0][0] << endl;
cout << "[1][0]=" << array2d[1][0] << endl;
关于c++ - 从一维数组创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936040/