c++ stack类能否自定义比较函数

avatar
作者
筋斗云
阅读量:0

是的,C++的stack类允许你自定义比较函数。默认情况下,stack使用operator<进行元素比较,但你可以在创建stack时提供自定义的比较函数。

例如,假设你有一个自定义的数据结构MyClass,你想使用一个非标准的比较函数对其进行排序。你可以这样做:

#include <iostream> #include <stack> #include <functional>  class MyClass { public:     int value;      MyClass(int v) : value(v) {} };  // 自定义比较函数 bool compareMyClass(const MyClass& a, const MyClass& b) {     return a.value > b.value; // 降序排序 }  int main() {     // 使用自定义比较函数创建stack     std::stack<MyClass, std::vector<MyClass>, decltype(compareMyClass)> myStack(compareMyClass);      myStack.push(MyClass(5));     myStack.push(MyClass(3));     myStack.push(MyClass(10));      while (!myStack.empty()) {         MyClass top = myStack.top();         myStack.pop();         std::cout << "Top value: " << top.value << std::endl;     }      return 0; } 

在这个例子中,我们定义了一个名为compareMyClass的比较函数,用于按降序对MyClass对象进行排序。然后,我们使用std::stack的第三个模板参数(比较函数)来指定我们的自定义比较函数。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!