类模板

 类也可以被一种或多种类型参数化。容器类就是一个具有这种特性的典型例子,通常被用于管理某种特定类型的元素。

 只要使用类模板,你就可以实现容器类,而不需要确定容器中元素的类型。


#include <vector>

template <typename T>

class Stack{

    private:

       std::vector<T>   elems;    //存储元素的容器

    public:

       void push{ T const&};      //压人元素

       void  pop();                     //弹出元素

       T  top()  const;                //返回栈顶元素

       bool  empty() const{       //返回栈是否为空  

             return elems.empty();

       }

};


template <typename T>

void Stack<T> :: push(T const&  e_em)

{

    elem.push_back(e_em);             //把elem的拷贝附加到末尾

}


template<typename T>

void Stack<T>::pop()

{

        if(elems.empty()){

              throw std::out_of_range(stack<>::pop():empty  stack");

       }

       elems.pop_back();           //删除最后一个元素

}


template<typename T>

T stack<T>::top() const

{

      if(elems.empty()){

        throw std::out_of_range("Stack<>:: top()  : empty stack");

    }

    return elems.back();

}


在声明中需要使用该类的类型时,必须使用Stack<T>,如果需要声明自己实现的拷贝构造函数和赋值运算符,

template <typename T>

class Stack{

      Stack(Stack<T> const& );                                     //拷贝构造函数

      Stack<T>&  operator = (Stack<T> const&);          //赋值运算符

}

然而,当使用类名而不是类的类型时,就应该只用Stack; 譬如,当你指定类的名称、类的构造函数、析构函数时,就应该使用Stack.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值