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