温馨提示×

c++ set支持哪些数据类型

c++
小樊
83
2024-11-16 15:50:45
栏目: 编程语言

C++ 的 std::set 是一个关联容器,它包含一组唯一的对象。std::set 中的元素在插入时自动按键排序。键是元素本身,因此每个元素在 std::set 中只能出现一次。

std::set 支持多种数据类型作为其元素,包括但不限于以下几种:

  1. 基本数据类型:如 intfloatdoublecharbool 等。
  2. 指针类型:如 int*MyClass* 等。但请注意,使用指针作为键时,应确保指向的对象在 std::set 的生命周期内保持有效。
  3. 用户自定义类型:只要这些类型重载了 < 运算符(用于比较元素的大小),就可以作为 std::set 的元素。例如,可以定义一个结构体或类,并重载 < 运算符以使其能够用作键。
  4. 其他容器类型:如 std::stringstd::vectorstd::map 等。但需要注意的是,当使用这些容器类型作为键时,std::set 将使用容器中的第一个元素(通常是 begin() 返回的元素)作为键进行比较。

下面是一个简单的示例,展示了如何使用自定义类型作为 std::set 的元素:

#include <iostream>
#include <set>

struct MyType {
    int value;

    MyType(int v) : value(v) {}

    // 重载 '<' 运算符以用于排序
    bool operator<(const MyType& other) const {
        return value < other.value;
    }
};

int main() {
    std::set<MyType> mySet;

    mySet.insert(MyType(3));
    mySet.insert(MyType(1));
    mySet.insert(MyType(2));

    for (const auto& elem : mySet) {
        std::cout << elem.value << ' ';
    }

    return 0;
}

输出:

1 2 3

0