![](/img/trans.png)
[英]Confusion between C++ and OpenGL matrix order (row-major vs column-major)
[英]Sorting a given matrix in C++ in row major order
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)
例如sort(arr, arr + n)
,其中n
是数组的大小。 但这对我来说没有多大意义。
那只是一个为数组调用真正的std::sort
函数的函数。 如果是数组, std::sort
函数将获得指向数组第一个元素的指针和指向数组末尾的指针(位于最后一个元素之后)。
由于静态分配的二维数组以单个序列存储在内存中,因此您可以通过递增指针ptr
直到它达到ptr+N*N
来对其进行迭代。
int *ptr = (int *)arr;
-指向第一个元素的指针
ptr+N*N
指向数组末尾的指针(在最后一个元素之后)
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()以升序对数组进行排序。
单击此链接并进行研究。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.