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
是数组的大小。但这对我来说没有多大意义。
答案 0 :(得分:1)
那只是一个为您的数组调用真正的std::sort
函数的函数。
对于数组,std::sort
函数将获得指向数组第一个元素的指针和指向数组末尾的指针(位于最后一个元素之后)。
由于静态分配的二维数组作为单个序列存储在内存中,因此您可以通过递增指针ptr
直到它到达ptr+N*N
来对其进行迭代。
int *ptr = (int *)arr;
-指向第一个元素的指针
ptr+N*N
-指向数组末尾的指针(紧接在最后一个元素之后)
答案 1 :(得分:0)
sort(arr, arr + n)
是STL中的算法,可以对数组中的元素进行排序
排序算法的简单演示
int arr[] = {1, 5, 8, 9, 6, 7, 3, 4, 2, 0};
int n = sizeof(arr)/sizeof(arr[0]);
sort(arr, arr+n);
cout << "\nArray after sorting using default sort is : \n";
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
输出:
使用默认排序排序后的数组是:
0 1 2 3 4 5 6 7 8 9
因此默认情况下
sort()以升序对数组进行排序。
点击此链接并进行研究。