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

c++
822
2024/9/25 12:31:17
栏目: 编程语言
开发者测试专用服务器限时活动,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的第三个模板参数(比较函数)来指定我们的自定义比较函数。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: c++中cin指的是什么意思