簡體   English   中英

使用C ++ stl中定義的堆棧

[英]Using stack defined in C++ stl

#include <stack>
using namespace std;

int main() {
    stack<int> s;
    int i;
    for (i = 0; i <= 10; i++) {
        s.push(i);
    }
    for (i = 0; i <= 10; i++) {
        printf("%d", s.pop());
    }
}

上面的代碼有什么問題?

錯誤:

在function int main() :在期望整數的地方使用的聚合值

stack::pop是一個void函數,它只丟棄堆棧中的top元素,以獲得你想要使用的值stack::top

這樣做的原因是出於異常安全原因 (如果返回的對象在其復制構造函數中拋出異常會發生什么?)。

輕微的挑剔,你的for循環實際上編碼了11個項目,而不是像你從簡短的循環計數一樣思考。 如果你想要添加11個元素,請考慮使用<11。

你正在處理pop()這是一個打印到標准輸出的操作。 pop()只是從堆棧中刪除最頂層的元素。 然而,最令人困惑的是你的調試輸出。

我用標准的GNU C ++編譯器編譯了你的代碼片段,它給了我:

main.cpp | 12 |錯誤:無效使用void表達式

int main() {
    stack<int> s;
    int i;
    for (i = 0; i <= 10; i++) {
        s.push(i);
    }
    for (i = 0; i <= 10; i++) {
          printf("%i", s.top());
          s.pop();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM