溫馨提示×

C++ less如何用于自定義排序

c++
小樊
84
2024-09-14 09:30:53
欄目: 編程語言

在 C++ 中,std::less 是一個函數(shù)對象(也稱為比較器或仿函數(shù)),它提供了兩個參數(shù)的比較操作。默認情況下,std::less 用于比較兩個元素的大小,并返回一個布爾值,表示第一個元素是否小于第二個元素。

要使用 std::less 進行自定義排序,您需要重載 operator() 函數(shù)。以下是一個簡單的示例,展示了如何使用 std::less 對一個包含結(jié)構(gòu)體的向量進行自定義排序:

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

struct Person {
    std::string name;
    int age;
};

// 自定義比較器
struct CustomLess : public std::less<Person> {
    bool operator()(const Person& a, const Person& b) const {
        // 按年齡從小到大排序
        return a.age < b.age;
    }
};

int main() {
    std::vector<Person> people = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}};

    // 使用自定義比較器對向量進行排序
    std::sort(people.begin(), people.end(), CustomLess());

    // 輸出排序后的結(jié)果
    for (const auto& person : people) {
        std::cout<< person.name << ": "<< person.age<< std::endl;
    }

    return 0;
}

在這個示例中,我們首先定義了一個名為 Person 的結(jié)構(gòu)體,然后創(chuàng)建了一個包含 Person 對象的向量。接下來,我們定義了一個名為 CustomLess 的自定義比較器,該比較器繼承自 std::less<Person>。在 CustomLess 中,我們重載了 operator() 函數(shù),使其根據(jù) Person 對象的年齡進行比較。

最后,我們使用 std::sort 函數(shù)和自定義比較器 CustomLess() 對向量進行排序。運行此程序?qū)⑤敵霭茨挲g從小到大排序的人員列表。

0