亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何自定義 C++ Set 的排序規則

c++
小樊
93
2024-08-09 01:13:42
欄目: 編程語言

要自定義 C++ Set 的排序規則,可以通過傳遞一個 lambda 函數或者函數對象作為 Set 的比較函數來實現。比如,如果要按照字符串長度遞增的順序排序 Set,可以這樣實現:

#include <iostream>
#include <set>
#include <string>

struct CompareStringByLength {
    bool operator() (const std::string& a, const std::string& b) const {
        return a.length() < b.length();
    }
};

int main() {
    std::set<std::string, CompareStringByLength> stringSet;

    stringSet.insert("hello");
    stringSet.insert("world");
    stringSet.insert("c++");

    for (const auto& str : stringSet) {
        std::cout << str << std::endl;
    }

    return 0;
}

在這個例子中,我們定義了一個名為 CompareStringByLength 的函數對象,它重載了 () 運算符,用來比較兩個字符串的長度。然后將這個函數對象作為 Set 的第二個模板參數傳遞給 Set,即 std::set<std::string, CompareStringByLength> stringSet;。這樣 Set 就會使用 CompareStringByLength 中定義的比較規則來排序元素。

除了函數對象之外,還可以通過 lambda 函數來實現自定義的排序規則,如:

#include <iostream>
#include <set>
#include <string>

int main() {
    auto compareStringByLength = [](const std::string& a, const std::string& b) {
        return a.length() < b.length();
    };

    std::set<std::string, decltype(compareStringByLength)> stringSet(compareStringByLength);

    stringSet.insert("hello");
    stringSet.insert("world");
    stringSet.insert("c++");

    for (const auto& str : stringSet) {
        std::cout << str << std::endl;
    }

    return 0;
}

這里我們使用了 lambda 函數 compareStringByLength,并在 Set 的構造函數中傳遞了這個 lambda 函數,來實現自定義的排序規則。

0
潞西市| 金塔县| 资讯| 大化| 剑河县| 嘉祥县| 江永县| 蓬溪县| 治多县| 古田县| 洪泽县| 曲松县| 长宁区| 剑川县| 盐山县| 饶平县| 福贡县| 吴旗县| 鄂伦春自治旗| 延川县| 宁蒗| 西青区| 南汇区| 宁海县| 台前县| 林州市| 云和县| 葫芦岛市| 余干县| 盐城市| 北宁市| 方山县| 邳州市| 卓尼县| 长治市| 论坛| 平武县| 桦川县| 和静县| 罗山县| 彝良县|