C++:交换矩阵的行:使用单维数组

C++: Swap Rows For A Matrix: Using a SINGLE DIMENSION Array

本文关键字:数组 单维 交换 C++      更新时间:2023-10-16

亲爱的善良而聪明的人,您介意与我分享为什么我的代码无法将行交换为矩阵吗?当我运行代码时,两行变得相同,天哪。

条目[i]是存储矩阵中元素的动态数组。 元素从左到右逐行存储。 即在 3X3 矩阵中,条目 [2] 是第 1 行的第 3 个元素, 条目[3]是第2行的第一个元素

n = number of rows in matrix
m = number of columns in matrix
void Matrix::SwapRows(int i, int j) {
double* temp;
temp = new double[n * m];
double* temp2;
temp2 = new double[n * m];
for (int a = 1; a <= n; a++) {
for (int b = 1; b <= m; b++) {
if (a == i) {
temp[(j - 1) * m + b - 1] = entries[(j - 1) * m + b - 1];
entries[(a - 1) * m + b - 1] = temp[(j - 1) * m + b - 1];
}
if (a == j) {
temp2[(i - 1) * m + b - 1] = entries[(i - 1) * m + b - 1];
entries[(a - 1) * m + b - 1] = temp2[(i - 1) * m + b - 1];
}
}
}
delete temp;
delete temp2;
}

THanx to Jesper Juhl,swap 就可以了。正确的方法如下。谢谢杰斯珀!

void Matrix::SwapRows(int i, int j) {
for (int a = 1; a <= n; a++) {
for (int b = 1; b <= m; b++) {
if (a == i) {
swap (entries[(a - 1) * m + b - 1], entries[(j - 1) * m + b - 1]);
}
}
}
}