c++中怎么用sort自定义排序规则

   2025-02-13 2110
核心提示:在C++中,可以使用sort函数来对数组或者容器进行排序。如果想要自定义排序规则,可以使用函数指针、函数对象或者lambda表达式来

在C++中,可以使用sort函数来对数组或者容器进行排序。如果想要自定义排序规则,可以使用函数指针、函数对象或者lambda表达式来实现。

使用函数指针:首先定义一个比较函数,该函数接受两个参数,并返回一个布尔值,表示是否需要交换这两个元素的位置。然后将该函数的指针作为第三个参数传递给sort函数。
bool compare(int a, int b) {    // 自定义比较规则,例如按照绝对值进行排序    return abs(a) < abs(b);}int main() {    int arr[] = {-1, 2, -3, 4, -5};    int n = sizeof(arr) / sizeof(arr[0]);    sort(arr, arr + n, compare);    // 输出排序结果    for (int i = 0; i < n; i++) {        cout << arr[i] << " ";    }    return 0;}
使用函数对象:定义一个类,并重载()运算符,使其接受两个参数,并返回一个布尔值。然后创建该类的对象,并将对象作为第三个参数传递给sort函数。
struct Compare {    bool operator()(int a, int b) {        // 自定义比较规则,例如按照绝对值进行排序        return abs(a) < abs(b);    }};int main() {    int arr[] = {-1, 2, -3, 4, -5};    int n = sizeof(arr) / sizeof(arr[0]);    sort(arr, arr + n, Compare());    // 输出排序结果    for (int i = 0; i < n; i++) {        cout << arr[i] << " ";    }    return 0;}
使用lambda表达式:直接在sort函数的第三个参数位置使用lambda表达式来定义比较规则。
int main() {    int arr[] = {-1, 2, -3, 4, -5};    int n = sizeof(arr) / sizeof(arr[0]);    sort(arr, arr + n, [](int a, int b) {        // 自定义比较规则,例如按照绝对值进行排序        return abs(a) < abs(b);    });    // 输出排序结果    for (int i = 0; i < n; i++) {        cout << arr[i] << " ";    }    return 0;}

以上是三种常见的自定义排序规则的方法。根据具体需求选择合适的方法。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言