中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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

小億
113
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
丁青县| 温宿县| 甘孜| 临泽县| 扎赉特旗| 敖汉旗| 长白| 修水县| 岫岩| 蕉岭县| 临安市| 弥渡县| 新安县| 贵港市| 绥中县| 云林县| 喜德县| 阿瓦提县| 东兰县| 衡阳县| 铜梁县| 斗六市| 宝山区| 宜都市| 鲁山县| 凤阳县| 临颍县| 六安市| 达拉特旗| 清徐县| 新晃| 邓州市| 平定县| 晴隆县| 汨罗市| 望江县| 吉林市| 石阡县| 城步| 衡东县| 朔州市|