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

溫馨提示×

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
淮安市| 肃北| 灵宝市| 贞丰县| 宜良县| 嵩明县| 微山县| 东至县| 临漳县| 文昌市| 鄂尔多斯市| 綦江县| 隆化县| 灌云县| 江口县| 拜泉县| 宜州市| 桓仁| 无为县| 江津市| 临高县| 通州市| 大余县| 吉首市| 南岸区| 许昌市| 怀宁县| 宿松县| 阿克苏市| 荔波县| 大足县| 高安市| 阿合奇县| 枝江市| 襄垣县| 青铜峡市| 高要市| 黑河市| 乡城县| 定襄县| 苍山县|