C++ 如何复制矩阵?
我需要将我设置为M的矩阵复制到新矩阵M2中,并输出该矩阵 如何做到这一点 以下是我迄今为止所做的尝试:C++ 如何复制矩阵?,c++,C++,我需要将我设置为M的矩阵复制到新矩阵M2中,并输出该矩阵 如何做到这一点 以下是我迄今为止所做的尝试: #include <iostream> using namespace std; #define N 24 void copy(int M[][N], int M2[][N], int ROWS, int COLS) { int r, c; M2[r][c]= M[r][c]; cout<< M2[r][c]; } void print(in
#include <iostream>
using namespace std;
#define N 24
void copy(int M[][N], int M2[][N], int ROWS, int COLS)
{
int r, c;
M2[r][c]= M[r][c];
cout<< M2[r][c];
}
void print(int M[][N], int ROWS, int COLS)
{
int r, c, row, col;
row= 1;
col= 1;
M[row][col] = 2;
for(r=0; r< ROWS; r++)
{
for(c=0; c < COLS; c++)
{
if(M[r][c]==0)
{
cout<<" ";
}
else if (M[r][c]==1)
{
cout<< "T";
}
else if (M[r][c]==2)
{
cout<< "*";
}
else
{
cout << M[r][c];
}
}
cout <<endl;
}
}
void fill(int M[][N], int ROWS, int COLS, int row, int col)
{
int r, c;
for(r=0; r< ROWS; r++)
{
for(c=0; c < COLS; c++)
{
if (r == 0 || r == ROWS - 1) {
M[r][c]=0;
}
else if(c == 0 || c == COLS -1) {
M[r][c]=0;
}
else {
M[r][c]= 1;
}
}
}
}
int main()
{
int M[N/2][N];
int M2[N/2][N];
int ROWS, COLS;
int r, c;
ROWS = sizeof(M) / sizeof(M[0]);
COLS = sizeof(M[0]) / sizeof(M[0][0]);
fill(M, ROWS, COLS, 1, 1);
print(M, ROWS, COLS);
copy(M, M2, ROWS, COLS);
return 0;
}
#包括
使用名称空间std;
#定义n24
无效副本(整数M[][N],整数M2[][N],整数行,整数列)
{
int r,c;
M2[r][c]=M[r][c];
cout这里有一个问题:
int r, c;
M2[r][c]= M[r][c];
您从未分配过r
和c
,它们包含一些未知值,可能超出范围0..ROWS-1
和0..COLS-1
不要使用未初始化的值,尤其是在指针算术中
要复制整个矩阵,您可能需要一些类似于print
函数中的循环。因为您使用二维数组来存储矩阵,所以将一个矩阵复制到另一个矩阵应该像调用memcpy一样简单。任何数组的内容(无论维度如何)在内存中连续存储
在复制函数中,只需将以下代码行放入其中:
memcpy(M2, M1, r * c * sizeof(int));
在memcpy之前,请确保为r和c分配了适当的值(显然,这应该是正确的行数和列数)。在顶部,上面写着void copy(…),下面我设置了M2[r][c]=M[r][c],然后