c++ - 如何对作为参数传递的数组进行排序?

标签 c++ arrays sorting pointers

我必须在已经编写的代码中编写一个方法,直接向我传递一个数组。但是一旦进入我的方法,该数组就变成了指向数组中第一个对象的指针。所以现在我已经做了一些计算,想要对数组进行排序。但由于它现在不被视为数组,所以我无法执行 sort() 函数。

当我只有指针可以使用时,对数组进行排序的最佳方法是什么?

最佳答案

您要么需要知道数组中元素的数量,将其作为单独的参数传递,要么需要一个指向最后一个元素之后的元素的指针。

void my_sort(int* p, unsigned n) {
    std::sort(p, p+n);
}

void my_sort2(int* p, int* p_end) {
    std::sort(p, p_end);
}

你会调用他们

int a[] = { 3, 1, 2 };
my_sort(a, sizeof a / sizeof a[0]); // or 3...
my_sort2(a, &a[2] + 1); // one past the last element! i.e. a+3

关于c++ - 如何对作为参数传递的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039352/

相关文章:

c++ - 如何从字符串中获取 UTC 偏移量

c# - IsNullOrEmpty 等同于 Array? C#

python - 避免 python 3.5 中的溢出

python - 如何根据特定标准对列表进行排序

C# 列表数字排序

c++ - 用 MFC 替换控制台应用程序界面

c++ - 递归变体输出编译但在运行时出现段错误

c++ - 矩阵 vector 乘法 CCS c++

android - 如何使多个 url 链接显示在数组中?

C++将值传递给函数中的二维字符数组