溫馨提示×

c++ stack類能否自定義比較函數

c++
小樊
81
2024-09-25 08:43:12
欄目: 編程語言

是的,C++的stack類允許你自定義比較函數。默認情況下,stack使用operator<進行元素比較,但你可以在創(chuàng)建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() {
    // 使用自定義比較函數創(chuàng)建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的第三個模板參數(比較函數)來指定我們的自定義比較函數。

0