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

溫馨提示×

c++中set支持哪些數據類型

c++
小樊
81
2024-11-24 12:46:52
欄目: 編程語言

C++ 中的 std::set 是一個關聯容器,它包含一組唯一的對象。std::set 中的元素在插入時自動按鍵排序。鍵是元素本身,因此每個元素都必須提供比較運算符(operator<),以便確定其順序。

std::set 支持以下數據類型:

  1. 基本數據類型:如 intfloatdoublecharbool 等。對于這些基本數據類型,std::set 會使用它們的默認比較運算符。

  2. 指針類型:如 int*float* 等。對于指針類型,std::set 會使用指針的地址進行比較。

  3. 用戶自定義類型:你可以使用任何滿足以下條件的類或結構體作為 std::set 的元素:

    • 該類型必須定義小于運算符(<)。
    • 如果定義了多個重載的比較運算符,則必須確保 std::set 使用正確的版本。通常,最好只定義一個比較運算符重載函數,并使用 std::less 作為默認比較方式。
  4. 復合類型:如 std::pairstd::tuple 等。這些類型也可以作為 std::set 的元素,但需要確保它們提供了適當的比較運算符。

下面是一個簡單的示例,展示了如何使用 std::set 存儲自定義類型的元素:

#include <iostream>
#include <set>

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

    // 自定義比較運算符
    bool operator<(const Person& other) const {
        if (name != other.name) return name < other.name;
        return age < other.age;
    }
};

int main() {
    std::set<Person> people;

    people.insert(Person{"Alice", 30});
    people.insert(Person{"Bob", 25});
    people.insert(Person{"Charlie", 30});

    for (const auto& person : people) {
        std::cout << person.name << ": " << person.age << std::endl;
    }

    return 0;
}

注意:在這個示例中,我們為 Person 結構體重載了小于運算符,以便 std::set 可以正確地比較和排序 Person 對象。

0
汕头市| 司法| 阳谷县| 来安县| 绥芬河市| 新营市| 新竹市| 恩施市| 兖州市| 铁力市| 西畴县| 镇赉县| 离岛区| 西乌珠穆沁旗| 元阳县| 民勤县| 威宁| 海兴县| 固阳县| 建宁县| 湖北省| 罗山县| 曲阜市| 钟祥市| 绥芬河市| 龙南县| 桦川县| 教育| 华池县| 古蔺县| 奉新县| 新河县| 邯郸市| 富民县| 峡江县| 岳普湖县| 定安县| 石首市| 米林县| 德州市| 榆中县|