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