1、编程注意点见注释
2、堆栈常见应用场景有:大数相加,括号匹配等场景
3、相比于vector实现堆栈,list实现堆栈更为合适。这样可以避免堆栈大小的限制,且不存在管理未实现空间的问题。
#ifndef __VECTOR_STACK__
#include
using namespace std;
template
class Stack {
public:
Stack()
{
v.reserve(capacity);
}
bool isEmpty const() // 无修改的建议增加const参数
{
return v.empty();
}
void push(const T &e) // 对象入参,传递常引用
{
v.push_back(e);
}
T& pop()
{
T e = v.back(); // 对象返回值,传递引用
v.pop_back(); // pop_back无返回值
return e;
}
void clear()
{
v.clear();
}
T& topEI()
{
return T.back();
}
private:
std::vector v;
};
#endif
list实现堆栈,相比于vector实现,减少了初始元素数量的申请,显得更为灵活
#ifndef __LIST_STACK__
#include
using namespace std;
template
class LStack {
public:
LStack()
{
}
bool isEmpty const() // 无修改的建议增加const参数
{
return pool.empty();
}
void push(const T &e) // 对象入参,传递常引用
{
pool.push_back(e);
}
T& pop()
{
T e = pool.back(); // 对象返回值,传递引用
pool.pop_back(); // pop_back无返回值
return e;
}
void clear()
{
pool.clear();
}
T& topEI()
{
return T.back();
}
private:
std::list pool;
};
#endif