set集合如何存结构体
时间: 2024-03-24 20:05:48 浏览: 77
在 C++ 中,set 集合是一种有序容器,它存储独一无二的元素,并且按照特定的排序规则进行排序。如果你想存储结构体类型的元素,可以通过自定义比较函数来指定排序规则。以下是一个示例代码:
```cpp
#include <iostream>
#include <set>
using namespace std;
// 定义结构体
struct Person {
string name;
int age;
};
// 自定义比较函数,按照年龄升序排序
struct ComparePerson {
bool operator()(const Person& p1, const Person& p2) const {
return p1.age < p2.age;
}
};
int main() {
// 创建 set 集合,并指定自定义比较函数
set<Person, ComparePerson> personSet;
// 添加元素
Person p1 = {"Alice", 25};
Person p2 = {"Bob", 30};
Person p3 = {"Charlie", 20};
personSet.insert(p1);
personSet.insert(p2);
personSet.insert(p3);
// 遍历输出元素
for (const auto& person : personSet) {
cout << "Name: " << person.name << ", Age: " << person.age << endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个名为 `Person` 的结构体,并且通过自定义比较函数 `ComparePerson` 来指定按照年龄升序排序。然后,我们创建了一个 set 集合 `personSet`,并将结构体类型的元素添加到集合中。最后,使用范围循环遍历输出集合中的元素。
请注意,这里的排序规则是按照年龄升序排序的,你可以根据自己的需求定义不同的比较函数来实现不同的排序方式。
阅读全文