温馨提示×

如何在c++中自定义stack类的比较函数

c++
小樊
81
2024-09-25 07:25:12
栏目: 编程语言

在C++中,可以通过提供自定义的比较函数来定制stack类的行为。这通常是通过使用std::stack的模板参数和提供一个自定义的比较对象来实现的。下面是一个示例,展示了如何创建一个自定义比较函数并将其用于std::stack

首先,定义一个自定义比较函数,例如:

#include <iostream>
#include <functional>
#include <stack>

// 自定义比较函数
struct CustomCompare {
    bool operator()(const int& a, const int& b) const {
        return a > b; // 实现降序排列
    }
};

接下来,创建一个使用自定义比较函数的std::stack实例:

int main() {
    // 使用自定义比较函数创建一个整数栈
    std::stack<int, std::vector<int>, CustomCompare> myStack;

    // 向栈中添加元素
    myStack.push(5);
    myStack.push(3);
    myStack.push(8);
    myStack.push(1);

    // 打印栈中的元素
    while (!myStack.empty()) {
        std::cout << ' ' << myStack.top();
        myStack.pop();
    }
    std::cout << std::endl;

    return 0;
}

在这个示例中,我们创建了一个名为CustomCompare的结构体,它实现了operator(),用于比较两个整数。然后,我们将这个自定义比较函数作为模板参数传递给std::stack,以便在栈中实现降序排列的元素。

0