stack 介绍
栈是一种容器适配器,特别为后入先出而设计的一种(LIFO ),那种数据被插入,然后再容器末端取出
栈实现了容器适配器,这是用了一个封装了的类作为他的特定容器,提供了一组成员函数去访问他的元素,元素从特定的容器,也就是堆栈的头取出袁术。
这个基础的容器可能是任何标准的容器类,和一些其他特殊设计的模板类,唯一的要求就是要支持一下的操作
实现C++ STL,栈有两个参数。
template < class T, class Container = deque > class stack;
参数示意:
T: 元素类型
Container: 被用于存储和访问元素的的类型
成员函数:
(1)stack::stack
stack ( const Container& ctnr = Container() );
用于构造一个栈适配器对象
(2)stack::empty
bool empty ( ) const;
判断是否为空
(3)stack::pop
void pop ( );
在栈的顶部移除元素
(4)stack::push
void push ( const T& x );
在栈顶添加元素
(5)stack::size
size_type size ( ) const;
计算栈对象元素个数
(6)stack::top
value_type& top ( );
const value_type& top ( ) const;
返回栈顶元素
#pragma once
#include<stdio.h>
#include<deque>
#include<iostream>
using namespace std;
template<class T,class Con = deque<T> >
class Stack
{
public:
typedef size_t SizeType;
typedef T ValueType;
public:
Stack() //用于构造一个栈适配器对象
{}
bool Empty()const //判断是否为空
{
return _con.empty();
}
SizeType Size()const //计算栈对象元素个数
{
return _con.size();
}
void Pop() //在栈的顶部移除元素
{
_con.pop_back();
}
void Push(const ValueType data) //在栈顶添加元素
{
_con.push_back(data);
}
ValueType& Top() //返回栈顶元素
{
return _con.back();
}
const ValueType& Top()const
{
return _con.back();
}
private:
Con _con;
};
用vector实现:
#include <iostream>
using namespace std;
#include <assert.h>
template<typename T>
class Vector
{
public:
typedef T valueType;
typedef valueType* Iteator;
typedef const valueType* const_Iterator;
typedef valueType& Reference;
typedef const valueType& const_Reference;
typedef size_t size_type;
public:
Vector() //构造函数
:_start(