中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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

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

是的,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的第三個模板參數(比較函數)來指定我們的自定義比較函數。

0
增城市| 天全县| 涿州市| 常宁市| 大邑县| 凤庆县| 永清县| 张家川| 广宁县| 巨野县| 南涧| 黄石市| 乐亭县| 祥云县| 云和县| 蓬溪县| 台东县| 庐江县| 商河县| 吉林市| 九台市| 当雄县| 荆门市| 海口市| 阜新| 西盟| 固安县| 巴林左旗| 临邑县| 富宁县| 库车县| 临洮县| 湘西| 华池县| 谢通门县| 介休市| 右玉县| 宜君县| 渭南市| 崇州市| 东乡县|