gpt4 book ai didi

c++ - 反转二维数组中的一行 C++

转载 作者:行者123 更新时间:2023-11-27 23:54:23 28 4
gpt4 key购买 nike

我正在尝试反转二维数组的每一行并将其存储在一个新的二维数组中。我知道我需要使用临时指针,但我似乎对如何实际执行这一切有点迷茫。我试过研究这个问题,但找不到任何特定于我的问题。

using namespace std;
void compute(int *p1, int *p2, int ROWS, int COLUMNS);
int main() {
const int COLUMNS = 3;
const int ROWS = 3;
int A[ROWS][COLUMNS] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int B[ROWS][COLUMNS] ;


int *p1, *p2;
p1 = &A[0][0];
p2 = &B[0][0];


compute(p1, p2, ROWS, COLUMNS);

return 0;
}

void compute(int *p1, int *p2, int ROWS, int COLUMNS) {

int *savePtrA, *savePtrB, *temp;
savePtrA = p1;
savePtrB = p2;
temp = p1+COLUMNS;

for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLUMNS; j++) {
temp = *p1;
*p2 = *p1 + 1;
p1--;
p2++;
}
}



for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLUMNS; ++j) {
cout << setw(5) << *savePtrA;
savePtrA++;
}
cout << setw(10) << " ";
for (int k = 0; k < COLUMNS; ++k) {
cout << setw(5) << *savePtrB;
savePtrB++;
}
cout << setw(10) << " ";

cout << endl;
}

}

最佳答案

您可以简单地调用 std::reverse_copy在一个循环中:

#include <algorithm>

int main()
{
const int COLUMNS = 3;
const int ROWS = 3;
int A[ROWS][COLUMNS] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int B[ROWS][COLUMNS] ;

for (int i = 0; i < ROWS; ++i)
std::reverse_copy(&A[i][0], &A[i][COLUMNS], &B[i][0]);
}

Live Example

源数组在前两个参数中给出——一个指向源行中第一个元素的指针,以及一个指向源行中最后一个元素之后的指针。第三个参数是目标行,它只是指向 B 行中第一个元素的指针。

关于c++ - 反转二维数组中的一行 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43743564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com