关于stack 使用vector模板构造函数!
代码如下:
构造不知道怎么写,默认构造出来就是这样的:

/*
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
构造不知道怎么写,默认构造出来就是这样的:

...全文
相关推荐
c++ STL 范例大全
### C++ STL范例大全:容器部分详解#### Vector**Vector**是C++标准模板库(STL)中的一个重要容器类型,它提供了一种动态数组的实现方式,支持随机访问,并且可以在尾部高效地添加或删除元素
c++实例教程,对大家初学c++非常有帮助
**STL(Standard Template Library)**:深入理解STL容器(如vector、list、deque、stack、queue、priority_queue、set、multiset
C++中stack、queue、vector的用法详解
C++中stack、queue、vector的用法详解C++中stack、queue、vector是三个常用的容器类,分别用于实现栈、队列和向量的数据结构。
深入分析JAVA Vector和Stack的具体用法
使用 peek() 方法获取栈顶元素* 使用 empty() 方法判断栈是否为空* 使用 search() 方法查找元素在栈中的位置三、Vector 和 Stack 的结构Vector 和 Stack
C++ STL Adaptor stack、queue和vector的使用.doc
C++ STL Adaptor stack、queue和vector的使用C++ STL 提供了多种容器类,包括 stack、queue 和vector 等,这些容器类都是基于 Adaptor 模式实现的


