C++ 中的 std::set 是一个关联容器,它包含一组唯一的对象。std::set 中的元素在插入时自动按键排序。键是元素本身,因此每个元素都必须提供比较运算符(operator<),以便确定其顺序。
std::set 支持以下数据类型:
-
基本数据类型:如
int、float、double、char、bool等。对于这些基本数据类型,std::set会使用它们的默认比较运算符。 -
指针类型:如
int*、float*等。对于指针类型,std::set会使用指针的地址进行比较。 -
用户自定义类型:你可以使用任何满足以下条件的类或结构体作为
std::set的元素:- 该类型必须定义小于运算符(
<)。 - 如果定义了多个重载的比较运算符,则必须确保
std::set使用正确的版本。通常,最好只定义一个比较运算符重载函数,并使用std::less作为默认比较方式。
- 该类型必须定义小于运算符(
-
复合类型:如
std::pair、std::tuple等。这些类型也可以作为std::set的元素,但需要确保它们提供了适当的比较运算符。
下面是一个简单的示例,展示了如何使用 std::set 存储自定义类型的元素:
#include
#include
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 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 对象。
以上就是关于“c++中set支持哪些数据类型”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm