c++ stack類能否存儲(chǔ)自定義類型

c++
小樊
81
2024-09-25 08:32:14
欄目: 云計(jì)算

C++的stack容器適配器可以存儲(chǔ)自定義類型。要實(shí)現(xiàn)這一點(diǎn),您需要確保滿足以下條件:

  1. 自定義類型需要重載<運(yùn)算符,因?yàn)?code>stack默認(rèn)使用<運(yùn)算符來(lái)比較元素并進(jìn)行排序。如果您希望使用其他比較方式,您需要提供自定義的比較函數(shù)或類。
  2. 如果您的自定義類型包含指針或其他資源管理對(duì)象,請(qǐng)確保正確地實(shí)現(xiàn)拷貝構(gòu)造函數(shù)、賦值運(yùn)算符和析構(gòu)函數(shù),以避免資源泄漏或其他問(wèn)題。

以下是一個(gè)簡(jiǎn)單的示例,展示了如何在stack中存儲(chǔ)自定義類型:

#include <iostream>
#include <stack>

class MyType {
public:
    int value;

    MyType(int v) : value(v) {}

    // 重載 '<' 運(yùn)算符
    bool operator<(const MyType& other) const {
        return value < other.value;
    }
};

int main() {
    std::stack<MyType> myStack;

    myStack.push(MyType(3));
    myStack.push(MyType(1));
    myStack.push(MyType(4));

    while (!myStack.empty()) {
        MyType top = myStack.top();
        myStack.pop();
        std::cout << "Top value: " << top.value << std::endl;
    }

    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)名為MyType的自定義類型,并重載了<運(yùn)算符。然后,我們創(chuàng)建了一個(gè)stack對(duì)象來(lái)存儲(chǔ)MyType對(duì)象,并執(zhí)行了一些基本操作。

0