[英]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.