int* m = new int [d1*d2];
ptr1 = m;
ptr2 = m + (d2*(d1-1));
if ( *ptr1 != *ptr2){
temp = ptr2;
ptr2 = ptr1;
ptr1 = temp;
}
ptr1 +=d2;
ptr2 -= d2;
为了做到
这
4 1
3 7
5 2
要
5 2
3 7
4 1
这是我到目前为止所提出的,几乎没有什么。 我在找到适合的循环方式时遇到了问题。
答案 0 :(得分:2)
只需颠倒整个事物然后反转每一行:
row/col representation:
4 1 => 2 5 => 5 2
5 2 1 4 4 1
actual layout of m:
4 1 5 2 => 2 5 1 4 => 5 2 4 1
答案 1 :(得分:0)
您需要两个循环,一个用于要翻转的行,然后翻转该行上的每个元素。因此,当翻转3x2矩阵时,int row
从0到2,int column
从0到1运行。
答案 2 :(得分:0)
以前的答案中描述了更好的方法。所以我的答案将解决为什么输出中没有任何变化。你交换指针而不是值。你想做的事:
temp = *ptr2;
*ptr2 = *ptr1;
*ptr1 = temp;
--ptr2;
++ptr1;