【发布时间】:2013-07-03 01:05:18
【问题描述】:
我有一个 n x n 矩阵存储在 int** matrix1 中。 我有另一个 int** matrix2,尺寸为 m x m,m > n。 我想复制第二个矩阵左上角的第一个矩阵,并将缺失的位置从 n+1 填充到 m。 除了逐个元素复制之外,还有其他方法吗?
【问题讨论】:
我有一个 n x n 矩阵存储在 int** matrix1 中。 我有另一个 int** matrix2,尺寸为 m x m,m > n。 我想复制第二个矩阵左上角的第一个矩阵,并将缺失的位置从 n+1 填充到 m。 除了逐个元素复制之外,还有其他方法吗?
【问题讨论】:
你可以使用
for (int i = 0; i < n; ++i)
{
memcpy ( matrix2[i], matrix1[i], n*sizeof(int));
}
然后填写缺失的位置
【讨论】:
matrix1 = (int**)malloc(sizeof(int*)*n);
matrix2 = (int**)malloc(sizeof(int*)*m);
for (int i = 0; i < n; ++i)
{
matrix1[i] = (int*)malloc(sizeof(int*)*n);
}
for (int i = 0; i < m; ++i)
{
matrix2[i] = (int*)malloc(sizeof(int*)*m);
}
// assigning some random values
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
matrix1[i][j] = j;
}
}
// copying elements using memcpy
for (int i = 0; i < n; ++i)
{
memcpy ( matrix2[i], matrix1[i], n*sizeof(int));
}
【讨论】: