关于stack 使用vector模板构造函数!

我爱吃豆腐 我爱吃豆腐 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:

/*
header:stack.h
note:栈
*/

#ifndef STACK_H_
#define STACK_H_
#include <vector>
#include <stdexcept>

namespace easy_kit
{

template <typename T>
class stack
{
private:
std::vector<T> elems;
public:
stack();
stack(stack<T> const&);
stack<T> & operator =(stack<T> const&);
public:
void push(T const &e);
void pop();
T top() const;
inline bool empty() const
{
return elems.empty();
}
inline T size() const
{
return elems.size();
}
};
template <typename T>
stack<T>::stack()
{

}


template <typename T>
stack<T>::stack(stack<T> const &e)
{
elems = e.elems;//这里直接用vector的拷贝构造
}

template <typename T>
stack<T> & stack<T>::operator = (stack<T> const &e)
{
if(static_cast<void*>(this)==static_cast<void*>&e)
return *this;
elems.clear();
elems = e.elems;
return *this;
}


template <typename T>
void stack<T>::push(T const &e)
{
elems.push_back(e);
}

template <typename T>
void stack<T>::pop()
{
if(stack::empty())
{
throw std::out_of_range("stack<>::pop is empty!");
}
elems.pop_back();
}

template <typename T>
T stack<T>::top() const
{
if(stack::empty())
{
throw std::out_of_range("stack<>::pop is empty!");
}
return elems.back();//返回最后一个元素的拷贝
}


}//end namespace easy kit


#endif



构造不知道怎么写,默认构造出来就是这样的:
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
我爱吃豆腐
C++ 语言 65,214 成员 250,514 内容