溫馨提示×

c++ 中的 set 會自動排序嗎

c++
小樊
107
2024-11-29 18:14:54
欄目: 編程語言

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

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女