阅读量:0
在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
,以便在栈中实现降序排列的元素。