在c++中复制一个矩阵/2d数组到另一个
Copy a matrix/2d array to another in c++
我试图复制一个2d数组到另一个2d数组,我有这两个数组创建:
#define mapXcor 50
#define mapYcor 50
char secondStage [mapXcor][mapYcor];
char currentStage [mapXcor][mapYcor];
//mapXcor and mapYcor are constant integers
现在我的secondStage[][]
数组上填充了值,但currentStage[][]
不是,我想将secondStage
的值分配给currentStage
。所以我创建了下面的函数:
void populateArray(char (&arrayA)[mapXcor][mapYcor], char arrayB[mapXcor][mapYcor]) {
for(int a = 0; a < mapXcor + 1; ++a) {
for(int b = 0; b < mapYcor + 1; ++b) {
arrayA[mapXcor][mapYcor] = arrayB[mapXcor][mapYcor];
}
}
}
populateArray(currentStage[mapXcor][mapYcor],secondStage[mapXcor][mapYcor]);
但是当我使用这个函数时,它给了我一个错误:
1智能感知:类型为"char (&)[20][50]"(非const限定的)不能用"char"
类型的值初始化2智能感知:参数类型为"char"与&;char (*)[50]&;
类型的参数不兼容
我该如何解决这个问题?
改变for循环中的赋值语句:
arrayA[mapXcor][mapYcor] = arrayB[mapXcor][mapYcor];
arrayA[a][b] = arrayB[a][b];
您可能正在访问的代码。不要给老师看:-)-有太多来自实际编程的内容。只要看看,然后写下你自己的解决方案:
#include <string.h>
#include <stdio.h>
#define mapXcor 5
#define mapYcor 5
static char secondStage [mapXcor][mapYcor];
static char currentStage [mapXcor][mapYcor];
void populateArray(char (&arrayA)[mapXcor][mapYcor], const char (&arrayB)[mapXcor][mapYcor]) {
/*
for(int a = 0; a < mapXcor; ++a) {
for(int b = 0; b < mapYcor; ++b) {
arrayA[a][b] = arrayB[a][b];
}
}
*/
memcpy(arrayA, arrayB, sizeof(arrayB));
}
int main()
{
for(int a = 0; a < mapXcor; ++a) {
for(int b = 0; b < mapYcor; ++b){
currentStage[a][b] = a*b + 10*a;
}
}
populateArray(secondStage, currentStage);
for(int a = 0; a < mapXcor; ++a) {
for(int b = 0; b < mapYcor; ++b){
printf("%2i ", secondStage[a][b]);
}
printf("n");
}
return 0;
}
的评论:
- 在循环中有不良的数组索引限制。寻找正确的函数下评论。
- 你在循环分配中有错误的索引。同样,注释掉代码。
- 如果你通过引用(目的地)传递一个数组,为什么不为源使用常量引用?
- 在实践中,你的区域有相同的类型(你甚至可以定义它们具有相同的类型)没有人按元素复制它们。我已经使用了memcpy(),但这只有在内存区域没有的情况下才有用重叠(在这种情况下-是的)。检查
man 3 memcpy
. - 努力学习:-)
#define ROWS 2
#define COLS 2
void copyArray(char (&arrayA)[ROWS][COLS], const char (&arrayB)[ROWS][COLS] ) {
memcpy(arrayA, arrayB, sizeof(arrayB));
}
int main(void){
char arr1 [ROWS][COLS];
char arr2 [ROWS][COLS];
// init arr1
copyArray(arr2, arr1);
return 0;
}
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在C++函数中声明静态 2D 数组?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 获取 2D 数组 c++ 中的所有数字对
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何在构造函数中使用初始值设定项设置具有相同值的 2d 数组?
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- 使用指针算法修改函数中的 2D 数组
- 在C++中初始化和打印 2D 数组
- 有没有办法使用输入的维度初始化 2d 数组中的所有项目而不循环C++?
- C++ 2D 数组写入多个位置
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- 如何从initializer_list初始化 2D 数组
- 交换函数不是在 C++ 中交换 2D 数组的元素