是的,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
容器就會根據我們提供的比較函數對元素進行排序。