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

我爱吃豆腐 2014-04-06 12:00:38
代码如下:

/*
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



构造不知道怎么写,默认构造出来就是这样的:
...全文
94 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱吃豆腐 2014-04-07
  • 打赏
  • 举报
回复
引用 3 楼 liu111qiang88 的回复:
没任何问题啊 这个是我的截图
问题已经解决了,搞了半天原来是 我vs2010在release版本,我把改成debug版本就好了,在release版本容易出现很多问题。。。。。。其实release输出的没问题的,只是调试下看着内容不对,,,
火头军 2014-04-06
  • 打赏
  • 举报
回复
你想问什么啊
火头军 2014-04-06
  • 打赏
  • 举报
回复
没任何问题啊 这个是我的截图
我爱吃豆腐 2014-04-06
  • 打赏
  • 举报
回复
引用 1 楼 liu111qiang88 的回复:
你想问什么啊
你看看调试结果,我想让 vector正常

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧