117.info
人生若只如初见

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

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

  1. 使用函数指针:首先定义一个比较函数,该函数接受两个参数,并返回一个布尔值,表示是否需要交换这两个元素的位置。然后将该函数的指针作为第三个参数传递给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;
}
  1. 使用函数对象:定义一个类,并重载()运算符,使其接受两个参数,并返回一个布尔值。然后创建该类的对象,并将对象作为第三个参数传递给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;
}
  1. 使用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;
}

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fea51AzsLAwdfBFA.html

推荐文章

  • c语言输出数字之间怎么以空格隔开

    在C语言中,可以使用空格字符来将数字之间进行分隔。下面是一个示例代码,演示了如何以空格隔开输出数字:
    #include int main() { int num1 = 10; int num2...

  • c语言转义字符怎么使用

    C语言中的转义字符是用来表示一些特殊字符的,以反斜杠(\)开头。下面是一些常用的转义字符及其用法: \n:表示换行符(newline)
    例如:printf(“Hello\n...

  • java arraylist的用途有哪些

    ArrayList是Java中常用的集合类之一,主要用途有以下几个: 存储和操作数据:ArrayList可以存储任意类型的对象,可以通过add()方法添加元素,通过get()方法获取元...

  • c++ sort函数的用法是什么

    sort函数是C++标准库中的一个算法函数,用于对容器中的元素进行排序。它的用法如下: 引入头文件:#include 使用sort函数进行排序:sort(begin, end, comp_funct...