首页 > 解决方案 > 在 C++ 中按行主要顺序对给定矩阵进行排序

问题描述

void sortAllWay(int arr[][N]) 
{ 
    // Consider matrix elements (in row major 
    // order) and sort the sequence. 
    int *ptr = (int*) arr; 
    sort(ptr, ptr + N * N); 
} 

这段代码究竟做了什么?

我们向它传递了一个数组,它已经被排序。我已经对数组进行了排序,例如数组的大小在sort(arr, arr + n)哪里。n然而,这对我来说没有多大意义。

标签: c++arrays

解决方案


std::sort这只是一个为您的数组调用真实函数的函数。在数组的情况下,std::sort函数获取指向数组第一个元素的指针和指向数组末尾的指针(就在最后一个元素之后)。

由于静态分配的二维数组作为单个序列存储在内存中,因此您可以通过递增指针来迭代它,ptr直到它到达ptr+N*N您的情况。

int *ptr = (int *)arr;- 指向第一个元素的指针

ptr+N*N- 指向数组末尾的指针(就在最后一个元素之后)


推荐阅读