gpt4 book ai didi

c++ - 使用 STL std::sort 的方式作为 qsort_r

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:53 24 4
gpt4 key购买 nike

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[] 中的值对 int arr[] 进行排序。

现在,我想用 std::sort 实现类似的功能,这就是我如何在 std::sort 中使用外部值?先感谢您。

最佳答案

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

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

关于c++ - 使用 STL std::sort 的方式作为 qsort_r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com