使用指针对2D数组排序

时间:2018-12-01 11:51:22

标签: sorting pointers multidimensional-array

我有一个二维数组int a [8] [2]。我想使用另一个数组Order [8] = {7,1,0,2,3,6,5, 4}。 我试过了,但是没用。

int result[8][2];
void Rearrange_Vector(int* a,int* order)
{
  int temp;
  int ii =0;
  for ( ii=0;ii<8;ii++)
  {
    temp = *Order;
    result[ii][0]  = *(a + temp*sizeof(int));
    Order++;
  }

有帮助吗?

1 个答案:

答案 0 :(得分:0)

您应该将2D数组解释为指向指针的指针,并交换行起始指针:

pushState: false

通过从指针转换为数组作为函数参数,您可以得到编译器的另一项好处,即检查#include <algorithm> int array[8][2]; template<int Rows, int Cols> void sort(int (&array)[Rows][Cols], int (&order)[Rows]) { for (int r = 0; r < Rows; ++r) { std::swap_ranges(&array[r][0], &array[r][Cols], &order[r]); } } int main() { int order[8] = {7,1,0,2,3,6,5,4}; sort(array, order); return 0; } 数组是否具有与order中的行数相同的元素数。