溫馨提示×

c++中怎么用sort自定義排序規則

小億
189
2023-12-27 16:54:30
欄目: 編程語言

在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;
}

以上是三種常見的自定義排序規則的方法。根據具體需求選擇合適的方法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女