2016-06-28 96 views
0

在下面的程序中,如何在該類的成員函數中打印堆棧數據?在C++中使用模板實現堆棧

#include <iostream> 
#include <vector> 

using namespace std; 

template <class T> 
class box{ 
    public : 
      vector<T> elems; 
      void push(T); // pushing data into stack 
      void pop(); 
      void display(); // displaying the stack data 
}; 

template <class T> void box<T> :: push(T ele) 
{ 
    elems.push_back(ele); // pushing stack elements 
} 

template <class T> void box<T> :: pop(void) 
{ 
    elems.pop_back(); 
} 

template <class T> void box<T> :: display(box &b) 
{ 
    //How to display the data inserted in stack here?? 
} 

int main(void) 
{ 
    box<int> b; 
    b.push(3); // inserting stack data into template 
    b.push(4); 
    b.push(5); 
    b.push(6); 
    b.push(7); 
} 

我試圖打印數據,但它是不是正確的,所以我不知道我怎麼可以訪問堆棧元素

+0

「我試圖打印數據,但它是不正確的」請顯示你的嘗試,以及它是不正確的。 – songyuanyao

+0

通過遍歷'elems'向量來訪問元素。 – molbdnilo

+0

pop應該返回一個T:'T pop()'... –

回答

2

無需傳遞box& b。你可以這樣做:

template <class T> void box<T>::display() { 
    for(T& e : elems) { 
     std::cout << e << std::endl; 
    } 
} 
0

你可以簡單地遍歷「elems」向量並打印它的元素。

> template <class T> void box<T>::display() { 
>  for(int i=0;i<elems.size();i++) 
>   cout<<elems[i]<<"\n"; 
> } 

注:
尺寸() - 返回矢量元素的數量。