当前位置: 首页 > news >正文

STL 容器:stack

目录

  • 1 stack 的概念
  • 2 stack 的构造方式
  • 2 stack 的常用接口
    • 2.2 stack 的操作
      • 2.2.1 empty()
      • 2.2.2 size()
      • 2.2.3 top()
      • 2.2.4 push()
      • 2.2.5 pop()
      • 2.2.6 swap()

stack 的技术文档:文档链接

1 stack 的概念

stack 是 STL 容器之一,它实现自数据结构当中的栈

与数据结构中的栈相同,stack 也只能在栈顶插入数据,删除数据,遵循后进先出的原则

要注意,这里的栈指的不是内存当中用来存放形参,局部变量的栈,而是一种用来存放数据,操作受限的线性表

要使用 stack,就需要包含头文件 stack,由于容器都是定义在 std 命名空间下的,所以还需要指定命名空间 std

#include <stack>

在这里插入图片描述

2 stack 的构造方式

在这里插入图片描述

在构造 stack 时,要使用以下的语法:

stack<数据类型, 内部所用的数据结构> 对象名();

其中,数据类型和对象名是必须要给定的,内部所用的数据结构与括号这两个信息不是必须的,如果不指定内部所用的数据结构,那么 stack 的内部用的结构就是 deque(一种顺序表和链表的结合),指定了内部所用的数据结构则使用指定的。

构造 stack 有两个方式:

(1)构造空的 stack

对象名后不加括号,就是在构造空的 stack

int main()
{stack<int> s1;return 0;
}

(2)通过已有的容器对象来构造 stack

用这种方式构造 stack 时,需要将 stack 内部所用的数据结构更改为用来初始化 stack 的容器对象的结构

int main()
{vector<int> v1(2, 200); //用来初始化栈的vectorstack<int, vector<int>> s1(v1); //构造栈所用的数据结构需要更改为vectorreturn 0;
}

2 stack 的常用接口

2.2 stack 的操作

stack 的操作主要有:

接口名称功能
empty检查栈是否为空
size获取栈中的元素个数
top获取栈顶元素
push将元素插入到栈顶
pop将栈顶元素移除
swap交换两个栈中的值

2.2.1 empty()

empty 的功能主要是检查栈是否为空,是空返回 true,非空则返回 false

int main()
{stack<int> s1;if (s1.empty())cout << "s1 is empty" << endl;elsecout << "s1 is not empty" << endl;stack<int> s2;s2.push(1);s2.push(2); //插入两个值到栈中if (s2.empty())cout << "s2 is empty" << endl;elsecout << "s2 is not empty" << endl;return 0;
}

最终的结果为:

s1 is empty
s2 is not empty

在这里插入图片描述

2.2.2 size()

size() 的主要功能是获取栈内元素的个数

int main()
{stack<int> s1;s1.push(1);s1.push(2);cout << s1.size() << endl;return 0;
}

最终结果为:

2

2.2.3 top()

top 的作用主要是获取栈顶的元素

int main()
{stack<int> s1;s1.push(1);s1.push(2);cout << s1.top() << endl;return 0;
}

最终结果为:

2

在这里插入图片描述

2.2.4 push()

push 的作用主要是将元素入栈并更新size,入栈后,该元素位于栈顶

int main()
{stack<int> s1;s1.push(1);s1.push(2);return 0;
}

在这里插入图片描述

2.2.5 pop()

pop 的作用主要是将栈顶元素出栈并更新 size

int main()
{stack<int> s1;s1.push(1);s1.push(2);s1.pop();return 0;
}

在这里插入图片描述

在这里插入图片描述

2.2.6 swap()

swap 的作用主要是交换两个栈中的内容

int main()
{stack<int> s1;s1.push(1);s1.push(2);stack<int> s2;s2.push(5);s2.push(6);s1.swap(s2);return 0;
}

交换前:

在这里插入图片描述

交换后:

在这里插入图片描述

http://www.dtcms.com/a/538627.html

相关文章:

  • 网站美化公司如何下载网站模板
  • 做外贸营销网站网站被封了怎么办
  • 【Linux】HTTP协议
  • 建设网站群的意义2345网址导航设置
  • 做微信网站支付需要什么信息表国外域名 网站备案
  • 网站版面网页设计素材音乐
  • 做网站图片如何压缩图片个人备案网站可以做产品推广
  • 建设一个充电站需要多少钱网站建设需要域名
  • 海南seo快速排名优化多少钱西安seo管理
  • 100个万能网站网站建设计划时间节点
  • 网站建设和优化的步骤在线设计房屋装修
  • 网站广告费怎么做分录oss如何做网站
  • .net 电子商务网站源码南宁网站建设设计制作
  • 天锐绿盾防泄密系统【2025年10月最新版】
  • 关于网络营销的网站婚纱摄影建设网站的目的
  • 选取ToddlerBot作为第一台仿人机器人平台
  • 门户网站定制开发小程序制作一般多少钱
  • 营销型网站策划设计做论坛和做网站有什么区别
  • html5 mysql 网站开发设计公司的企业使命
  • 做网站维护是什么岗位wordpress登录页logo修改
  • 网站备案拍布幕新能源汽车价格表2021
  • 解决微软输入法即使切换为中文也无法打出中文汉字,而是打出英文字母并且底下还有波浪线的问题
  • 建立网站 英语怎么说网站开发合同.doc
  • 知名企业网站搭建新感觉全网价值营销服务商韩城市网站建设局电话
  • ac86u做网站服务器项目管理软件工具
  • 爬取数据做网站小型网站建设方案
  • wordpress 网站建设中下载搭建网站软件下载
  • 最优秀的佛山网站建设临沂网站seo
  • Wine运行器3.4.0——虚拟机安装工具支持设置UEFI启动
  • 搭建网站代码统一手机网站