【Containers】stack

简述

栈(stack)又称为堆叠,是计算机科学中一种特殊的串列形式的抽象数据类型,其特殊之处在于只能允许在链表或数组的一端(称为堆栈顶端指针,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。另外栈也可以用一维数组或链表的形式来完成。堆栈的另外一个相对的操作方式称为队列。

由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

【Containers】stack_第1张图片堆栈简单示意图(维基百科)

特点

  1. 先入后出,后入先出。
  2. 除头尾节点之外,每个元素有一个前驱,一个后继。

基本用法

头文件:#include

构造方法:

template < class T, class Container = deque > class stack; 
// 参数T为元素类型,Container为用于存储和访问元素的容器类型,默认为deque
  1. stack s1;                                        s1是一个空的stack,元素类型为T,执行默认初始化
  2. stack s2(s1);                                  s2包含s1中所有元素的副本
  3. stack s2=s1;                                   等价于s2(s1),s2包含s1中所有元素的副本
  4. stack s3(d1);                                  s3包含deque d1中的所有元素的副本,注意类型要一致哦
  5. stack >  s4(c1);          s4包含Container c1中的所有元素的副本,注意类型一致

基本函数操作:

函数 功能
empty() 判断栈是否为空,为空返回ture
size() 返回栈内元素个数
top() 返回栈顶元素
push(a) 向栈顶插入一个元素a
emplace(a) 向栈顶插入一个元素a
pop() 删除一个栈顶元素
swap() 交换两个栈内所有元素

代码样例:

#include
#include
#include
#include
using namespace std;

int main()
{
    int a[2]={1,2};
    deque d1(2,3);
    vector c1(2,4);
    stack s1;
    for(int i=0;i<2;i++)s1.push(a[i]);
    stack s2(s1);
    stack s3(d1);
    stack> s4(c1);
    while(!s1.empty()){
        cout <

 

你可能感兴趣的:(STL库函数)