我在模板類堆棧中定義的deque對象的堆棧值時遇到問題。當初始化類堆棧對象並在初始化對象上使用STL deque類的push_back()成員函數並讀取堆棧內的元素數時,我得到零,但終端告訴我它將值推入其中。它看起來如下:不同C++:在類堆棧中使用deque成員函數
棧頭文件
#ifndef STACK_HH
#define STACK_HH
#include <iostream>
#include <deque>
template<class T>
class Stack {
public:
Stack(): s() { // <-- creating an empty deque s
s.size() ;
nitems() ;
empty() ;
}
~Stack() {
nitems() ;
empty() ;
}
//Member functions
int nitems() { return s.size() ; }
bool empty() { return (s.size()==0) ; }
void push_back(T c) {
s[s.size()] = c ;
}
T back() {
return s[s.size()] ;
}
void pop_back() {
if (empty()) {
std::cout << "Stack::pop() Error: stack is empty" << std::endl ;
}
}
private:
std::deque<T> s ;
};
#endif
主要腳本
#include <iostream>
#include <deque>
#include "Stack.h"
using namespace std ;
// Main
int main() {
int LEN = 10;
Stack<double> s ;
// Write doubles into Stack
for (int i=0 ; i<LEN ; i++) {
cout << "pushing value " << i*i << " in stack s" << endl ;
s.push_back(i*i) ;
}
// Count doubles in fifo
cout << s.nitems() << " value(s) in stack" << endl ;
return 0 ;
}
我)不知道我是否應該定義雙端隊列的push_back(,回()和pop_back()函數在我的堆棧頭文件。像void deque < T> :: push_back()和其他類似的東西。但是這並沒有解決它,因爲我已經期待使用s.pushback()也沒有工作。
任何幫助解決這個問題,慷慨讚賞。
編輯:
謝謝大家的幫助。