c++ - 在 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
然而,这对我来说没有多大意义。
解决方案
std::sort
这只是一个为您的数组调用真实函数的函数。在数组的情况下,std::sort
函数获取指向数组第一个元素的指针和指向数组末尾的指针(就在最后一个元素之后)。
由于静态分配的二维数组作为单个序列存储在内存中,因此您可以通过递增指针来迭代它,ptr
直到它到达ptr+N*N
您的情况。
int *ptr = (int *)arr;
- 指向第一个元素的指针
ptr+N*N
- 指向数组末尾的指针(就在最后一个元素之后)
推荐阅读
- html - 力量
表现为 display:inline 而不是 inline-block - c++ - 使用 optionparser.h 解析带有可选参数的 C++ 命令行参数
- java - 使用 java 从图像文件中裁剪酒店对象
- python - 使用 pyaudio 从音频输入中获取特定频率
- python - 如何仅使用重复键合并字典中的选择值
- laravel-5 - Laravel 记录“在命令行代码中找不到类 'Arr':1”
- windows - 为什么 Android Studio 拒绝在 GitHub 上共享项目?
- javascript - 如何从Javascript为元素中的输入值设置值?
- bash - 使用 bash 的 ssh-remote 插件的代码命令
- python - 使用 POST 请求提交表单后出现错误 404