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

溫馨提示×

如何自定義 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
枣强县| 新沂市| 玉溪市| 湖南省| 岐山县| 昌都县| 施甸县| 平顶山市| 彩票| 临漳县| 台东市| 景泰县| 静宁县| 屏山县| 萍乡市| 伊宁县| 个旧市| 化德县| 梓潼县| 鄂托克旗| 贡嘎县| 贵德县| 祁阳县| 安丘市| 正安县| 临西县| 武乡县| 永安市| 惠州市| 兴安县| 义马市| 内丘县| 长葛市| 郎溪县| 桐城市| 阿尔山市| 齐齐哈尔市| 苏尼特右旗| 上思县| 民县| 积石山|