使用STL std ::将方式排序为qsort

编程入门 行业动态 更新时间:2024-10-13 00:37:40
使用STL std ::将方式排序为qsort_r(Use STL std::sort the way as qsort_r)

使用qsort_r ,我们可以在比较函数中使用外部参数。 例如,

int cmp_with_parameter(void *a, void *b, void *p) { return (int*)p[*(int*)a] - (int*)p[*(int*b)]; } int main() { int values[] = {1,2,3,4}; int arr[] = {0, 1, 2, 3}; qsort_r(arr, 4, sizeof(arr[0]), cmp_with_parameter, values); }

我们可以用values[]中的values[]对int arr[]进行排序。

现在,我想用std :: sort实现类似的功能,这就是我可以在std :: sort中使用外部值的方式吗? 先谢谢你。

With qsort_r, we can use external parameters in the compare function. For instance,

int cmp_with_parameter(void *a, void *b, void *p) { return (int*)p[*(int*)a] - (int*)p[*(int*b)]; } int main() { int values[] = {1,2,3,4}; int arr[] = {0, 1, 2, 3}; qsort_r(arr, 4, sizeof(arr[0]), cmp_with_parameter, values); }

We can sort int arr[] by the value in values[].

Now, I would like to implement the similar function with std::sort, that is how I can use external values in std::sort? Thank you in advance.

最满意答案

std::sort()所采用的比较函数可以是一个保存适当信息的函数对象。 例如:

std::sort(std::begin(arr), std::end(arr), [=](int a, int b){ return values[a] < values[b]; });

The comparison function taken by std::sort() can be a function object holding suitable information. For example:

std::sort(std::begin(arr), std::end(arr), [=](int a, int b){ return values[a] < values[b]; });

更多推荐

本文发布于:2023-08-07 01:45:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1459076.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方式   STL   std   qsort

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!