91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何通過cmp函數實現C++中的復雜排序邏輯

c++
小樊
81
2024-08-07 16:10:24
欄目: 編程語言

在C++中,可以通過自定義cmp函數來實現復雜排序邏輯。cmp函數是一個比較函數,用于指定排序時的比較規則。以下是一個示例,演示如何通過cmp函數實現復雜排序邏輯:

#include <iostream>
#include <algorithm>
#include <vector>

struct Person {
    std::string name;
    int age;
    bool operator<(const Person& other) const {
        return age < other.age;
    }
};

bool cmp(const Person& a, const Person& b) {
    // 先按年齡從小到大排序
    if (a.age < b.age) {
        return true;
    } else if (a.age > b.age) {
        return false;
    }
    
    // 年齡相同的情況下,按姓名的字典序從小到大排序
    return a.name < b.name;
}

int main() {
    std::vector<Person> people = {{"Alice", 25}, {"Bob", 20}, {"Alice", 30}, {"Bob", 25}};
    
    // 使用cmp函數進行排序
    std::sort(people.begin(), people.end(), cmp);
    
    // 輸出排序結果
    for (const Person& p : people) {
        std::cout << p.name << " " << p.age << std::endl;
    }
    
    return 0;
}

在上面的示例中,定義了一個Person結構體,包含姓名和年齡兩個成員變量。通過重載Person結構體的<運算符,指定了默認的排序規則為按年齡從小到大排序。然后定義了cmp函數,實現了復雜的排序邏輯:先按年齡從小到大排序,年齡相同的情況下按姓名的字典序從小到大排序。

在main函數中,創建了一個包含4個Person對象的vector,并使用std::sort函數和自定義的cmp函數進行排序。最后輸出排序結果,可以看到排序結果符合預期的排序邏輯。

0
南江县| 同仁县| 定日县| 郸城县| 陇南市| 隆回县| 开原市| 察雅县| 吴江市| 色达县| 侯马市| 青岛市| 额济纳旗| 水富县| 通辽市| 灵宝市| 朔州市| 福建省| 远安县| 巴青县| 乌鲁木齐市| 安顺市| 拉孜县| 牟定县| 安宁市| 剑河县| 商南县| 来宾市| 嘉鱼县| 泗阳县| 塘沽区| 平武县| 东阿县| 固安县| 壤塘县| 延津县| 阜城县| 辉县市| 甘德县| 农安县| 资中县|