是的,C++ 中的 set
容器会自动对其元素进行排序。默认情况下,set
使用 std::less
比较函数来对元素进行升序排序。如果你想使用自定义的比较函数或对象来对元素进行排序,可以在定义 set
时提供相应的比较函数或对象。例如:
#include <iostream>
#include <set>
struct Person {
std::string name;
int age;
};
bool compareByAge(const Person& a, const Person& b) {
return a.age < b.age;
}
int main() {
std::set<Person, decltype(&compareByAge)> mySet(compareByAge);
mySet.insert(Person{"Alice", 30});
mySet.insert(Person{"Bob", 25});
mySet.insert(Person{"Charlie", 35});
for (const auto& person : mySet) {
std::cout << person.name << ": " << person.age << std::endl;
}
return 0;
}
在这个例子中,我们定义了一个 Person
结构体,并实现了一个自定义的比较函数 compareByAge
,用于比较 Person
对象的年龄。然后,我们使用 std::set
容器来存储 Person
对象,并将自定义的比较函数传递给 set
的模板参数中。这样,set
容器就会根据我们提供的比较函数对元素进行排序。