【C++】stack栈基础使用

一、定义

stack是一个STL(标准模板库),调用#include< stack>即可使用栈类。

二、构造函数

stack (<数据类型,容器类型>) stackName;

初始化时必须要有数据类型,容器可省略,省略时则默认为deque 类型

//stack是基于deque实现的,相当于deque双端队列,封闭了一端

/*创建堆栈时,不能在初始化列表中用对象来初始化,但是可以用另一个容器来初始化,
只要堆栈的底层容器类型和这个容器的类型相同*/
//stack s1 = {1,2,3,4};   error
//stack s1(10);           error

//1、创建一个空的栈s1
stack s1;
stack> s1;
 
//2、用vector容器初始化stack
vector v1={1,2,3,4};
stack> s2(v1);   //1,2,3,4依次入栈
 
//3、用deque容器初始化stack
//用deque为stack初始化时deque可省  因为stack是基于deque实现的, 默认以deque方式构造
deque d1 = {1,2,3,4,5};
stack> s3(d1);
stack s4(d1);  
 
//4、用list容器初始化stack
list l1 = {1,2,3,4,5};
stack> s5(l1);

三、常用函数

以下将stack stackName中的数据类型Type简写为T

  • top():返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值未定义。

  • push(const T& obj):可以将对象副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。

  • push(T&& obj):以移动对象的方式将对象压入栈顶。这是通过调用底层容器的有右值引用参数的 push_back() 函数完成的。

  • pop():弹出栈顶元素。

  • size():返回栈中元素的个数。

  • empty():在栈中没有元素的情况下返回 true。

  • emplace():用传入的参数调用构造函数,在栈顶生成对象。

  • swap(stack & other_stack):将当前栈中的元素和参数中的元素交换。参数所包含元素的类型必须和当前栈的相同。对于 stack 对象有一个特例化的全局函数 swap() 可以使用。

你可能感兴趣的:(C++提高编程,c++)