91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++ stack類能否限制棧的大小

c++
小樊
95
2024-09-25 08:37:15
欄目: 編程語言

C++ 標準庫中的 stack 容器適配器并沒有直接提供限制棧大小的功能。stack 是一個后進先出(LIFO)的數據結構,通常只提供了基本的 pushpoptop 操作。

如果你需要限制棧的大小,你可以使用 std::vectorstd::deque 作為底層容器,并在每次 push 操作時檢查棧的大小是否超過了限制。如果超過了限制,你可以選擇不執行 push 操作或者移除棧頂元素以滿足大小限制。

下面是一個使用 std::vector 作為底層容器并限制棧大小的示例:

#include <iostream>
#include <vector>

template<typename T, size_t MaxSize>
class LimitedStack {
public:
    void push(const T& value) {
        if (size() < MaxSize) {
            data.push_back(value);
        } else {
            std::cout << "Stack overflow! Cannot push " << value << std::endl;
        }
    }

    T pop() {
        if (!empty()) {
            T topValue = data.back();
            data.pop_back();
            return topValue;
        } else {
            std::cout << "Stack underflow! Cannot pop" << std::endl;
            throw std::runtime_error("Stack underflow");
        }
    }

    T top() const {
        if (!empty()) {
            return data.back();
        } else {
            std::cout << "Stack is empty! Cannot get top element" << std::endl;
            throw std::runtime_error("Stack is empty");
        }
    }

    bool empty() const {
        return data.empty();
    }

    size_t size() const {
        return data.size();
    }

private:
    std::vector<T> data;
    static constexpr size_t MaxSize = MaxSize;
};

int main() {
    LimitedStack<int, 5> stack;

    for (int i = 0; i < 10; ++i) {
        stack.push(i);
    }

    return 0;
}

在這個示例中,我們定義了一個 LimitedStack 類,它使用 std::vector 作為底層容器,并提供了一個靜態常量 MaxSize 用于限制棧的大小。當嘗試 push 一個元素時,如果棧的大小已經達到 MaxSize,則會輸出錯誤信息并跳過 push 操作。

0
教育| 肥乡县| 屯门区| 包头市| 新乐市| 疏附县| 子长县| 蓬溪县| 灯塔市| 晋宁县| 新疆| 乳源| 濮阳县| 石棉县| 鄂托克前旗| 舒城县| 蒲江县| 定边县| 图木舒克市| 乌拉特中旗| 启东市| 成武县| 宁陵县| 简阳市| 麻城市| 新邵县| 东安县| 阿拉善左旗| 建湖县| 英超| 清原| 榆社县| 噶尔县| 隆昌县| 新丰县| 浑源县| 板桥市| 梁河县| 凌源市| 博罗县| 德令哈市|