c++

c++ 中的 set 会自动排序吗

小樊
83
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
看了该问题的人还看了