从 1D 数组创建 2D 数组
creating 2d array from 1d arrays
如果我有几个相同数据类型的数组,将它们全部复制到 2D 数组中的最佳方法是什么。
例如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;
我猜我无法使用引用进行复制,因为数组需要在连续内存中输入其条目? 有没有我可以使用的像函数这样的记忆器?
不可能。您需要将一个数组逐个元素复制到另一个数组。
您还可以使用指向整数数组的指针数组来模拟 2D 数组。
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 提供 2D 数组,那么您应该重构您的方面。例如,您可以使用指针模拟一维数组:
// 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;
如果你想要一个实际的2D数组(在内存中是连续的),你必须复制元素。但是,您可以使用 2 个指针的数组来模拟它:
int *array2d[2];
array2d[0] = array1;
array2d[1] = array2;
你可以做一些事情。如果您知道数据在每个数组中都是恒定的,则可以#define
它,然后在 1D 和 2D 数组中使用它。或者,您可以将元素从一维数组复制到二维数组。第二点在这里说明:
#define ARRAY_1 { 1, 2, 3, 4, 5, 6 }
#define ARRAY_2 {7, 8, 9, 10, 11, 12 }
int array_1[] = ARRAY_1;
int array_2[] = ARRAY_2;
int two_dim_array[][] = {
ARRAY_1,
ARRAY_2,
}
定义并分配:
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;
测试:
printf("%dt",array2d[0][0]);
printf("%dt",array2d[0][9]);
printf("%dt",array2d[1][5]);
它给1 10 4
它
不是一个实际的 2D 数组,但你可以array2d
一个指向 1D 数组的指针数组:
int* array2d[2];
array2d[0] = array1;
array2d[1] = array2;
否则,您必须手动复制元素。
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在C++函数中声明静态 2D 数组?
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 获取 2D 数组 c++ 中的所有数字对
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何在构造函数中使用初始值设定项设置具有相同值的 2d 数组?
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 如何打印 2D 字符数组C++
- 如何将数组 2d 作为参数从函数传递并返回数组 2d 此函数
- 数组 2D 多个值
- 创建数组数组 (2D),而无需在 Java 中初始化内部数组
- 如何在C++中将文本文件传输到数组2D
- 从同一类的另一个方法调用数组2D-C++
- 获取地址在数组2d中的位置