在cpp中如何自定义set的排序规则
时间: 2024-11-04 13:11:14 浏览: 5
STL.rar_stl.cpp_结构排序类
在 C++ 中,如果你想自定义 `std::set` 的排序规则,通常你会通过创建一个自定义比较函数(也称为仿射函数),然后将其作为模板参数传递给 `std::set`。`std::set` 默认使用 `std::less<T>` 进行排序,其中 `T` 是容器中的元素类型。如果你想要改变排序顺序,比如按照某个成员变量的值,你可以这样做:
```cpp
// 假设我们有一个名为 MyClass 类,它有一个成员变量 named_var
class MyClass {
public:
// ...其他成员
int named_var;
};
// 自定义比较函数,这里按 named_var 排序降序
bool compare(const MyClass& a, const MyClass& b) {
return a.named_var > b.named_var;
}
int main() {
std::set<MyClass, decltype(&compare)> my_set(compare); // 使用自定义比较函数
// 现在 my_set 将会按照 named_var 的降序排列
// ...
}
```
在这个例子中,`decltype(&compare)` 提供了比较函数的类型信息给 `std::set` ,以便正确地应用。
阅读全文