阅读量:0
在 C++ 中,要自定义 set
容器的比较规则,需要创建一个自定义的比较类或者结构体,并重载 operator()
函数。然后将这个自定义比较类作为模板参数传递给 std::set
。
以下是一个示例,展示了如何自定义 set
容器的比较规则:
#include<iostream> #include <set> // 自定义比较类 struct CustomCompare { bool operator()(const int& a, const int& b) const { // 自定义比较规则,例如按照降序排列 return a > b; } }; int main() { // 使用自定义比较类作为 set 的第三个模板参数 std::set<int, CustomCompare> my_set; // 向 set 中添加元素 my_set.insert(3); my_set.insert(1); my_set.insert(4); my_set.insert(1); my_set.insert(5); // 输出 set 中的元素 for (const auto& elem : my_set) { std::cout<< elem << " "; } return 0; }
在这个示例中,我们创建了一个名为 CustomCompare
的自定义比较类,并重载了 operator()
函数。在这个函数中,我们定义了按照降序排列的比较规则。然后我们使用这个自定义比较类作为 std::set
的第三个模板参数,从而实现了自定义比较规则。
运行这段代码,你会看到输出的元素是按照降序排列的:5 4 3 1
。