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

溫馨提示×

如何自定義 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
广宁县| 惠来县| 根河市| 东宁县| 黄山市| 正镶白旗| 海淀区| 彝良县| 湖北省| 航空| 广州市| 寻乌县| 临城县| 南陵县| 宜君县| 潞城市| 白山市| 静安区| 梧州市| 洛南县| 台中市| 天津市| 玛曲县| 巴彦县| 光泽县| 桐庐县| 栾城县| 宁陕县| 麻江县| 宜章县| 赤壁市| 林口县| 鲁甸县| 政和县| 通渭县| 孟州市| 多伦县| 北流市| 乌拉特中旗| 龙海市| 荣昌县|