使用模板在C ++中实现堆栈实现

时间:2016-06-28 07:08:27

标签: c++ templates

在下面的程序中,如何在该类的成员函数中打印堆栈数据?

#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);
}

我试图打印数据但不合适,所以我不知道如何访问堆栈元素

2 个答案:

答案 0 :(得分:2)

无需传递box& b。你可以这样做:

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

答案 1 :(得分:0)

您可以简单地遍历“elems”向量并打印其元素。

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

注意:
size() - 返回向量中的元素数。