阅读量:0
在 C++ 中,std::set
是一个关联容器,它包含一组唯一的对象。std::set
通过比较函数(也称为排序函数)来确保元素按顺序存储。默认情况下,std::set
使用 <
运算符进行比较,但你可以通过提供自定义的比较函数来改变这种行为。
要自定义 std::set
的比较函数,请遵循以下步骤:
- 定义一个结构体或类,该结构体或类包含一个重载的
operator()
成员函数。这个函数将用作比较函数。 - 在创建
std::set
实例时,将自定义比较函数作为模板参数传递。
下面是一个示例,展示了如何自定义 std::set
的比较函数,以便按照元素的绝对值从大到小排序:
#include<iostream> #include <set> #include <cmath> // 自定义比较函数 struct CustomCompare { bool operator()(const int& a, const int& b) const { return std::abs(a) > std::abs(b); } }; int main() { // 使用自定义比较函数创建 set std::set<int, CustomCompare> my_set; // 向 set 添加元素 my_set.insert(-5); my_set.insert(3); my_set.insert(-8); my_set.insert(1); // 输出 set 中的元素 for (const auto& elem : my_set) { std::cout<< elem << " "; } return 0; }
输出结果将会是:
-8 -5 3 1
这表明 std::set
中的元素按照它们绝对值的降序排列。