STL——Stack常见用法

2023-10-29

Stack(栈)是一种后进先出的数据结构,也就是LIFO(last in first out) ,最后加入栈的元素将最先被取出来,在栈的同一端进行数据的插入与取出,这一段叫做“栈顶”。

使用STL的stack需要include一个头文件<stack>

常见用法:

  • push()会将一个元素放入stack中。(遵从先进后出)
  • top()会返回stack中的栈顶元素,返回的是reference,可以就地修改值。(弹出最后一个进入的元素)
  • pop()移除栈顶元素,无返回值。
  • size()返回stack长度。
  • empty()返回stack是否为空。

直接看例子

#include <iostream> 
#include <stack>  
using namespace std;

int main ()
{
  stack<int> mystack;

    for (int i=0; i<5; ++i) 
	    mystack.push(i); //push函数将参数元素加入栈中,没有返回值(例如这里循环将0,1,2,3,4加入栈中,注意栈顶元素是4)
    cout << "size: " << mystack.size() << endl; //size函数返回栈的大小(此时有5个元素,size=5)

    while (!mystack.empty())  //empty函数返回一个bool值,栈为空时返回true,否则返回false
    {
        cout << ' ' << mystack.top(); //top函数的返回值是栈顶元素(注意并没有删掉栈顶元素)
        mystack.pop();                //pop函数将栈顶元素删掉,没有返回值
    }
  cout << endl;

  return 0;
}

 

还有如:swap(); 等

例子2

#include <iostream>       
#include <stack>
using namespace std;

struct Node {
    int a,b;
    Node (int x, int y) {
        a = x; b = y;
    }
};

int main ()
{
    stack<Node> mystack;
    mystack.emplace(1,2); //emplace函数可以将一个元素加入栈中,与push的区别在于:emplace可以直接传入Node的构造函数的参数,并将构造的元素加入栈中
    //mystack.push(1,2); //编译不通过,要达到上面的效果需要手动构造,例如mystack.push(Node(1,2));
    Node p = mystack.top();
    cout << p.a << " " << p.b << endl;
    
    stack<Node> my2;
    my2.swap(mystack);   //swap函数可以交换两个栈的元素

    cout << mystack.size() << " " << my2.size() << endl;

  return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL——Stack常见用法 的相关文章

随机推荐

  • 计算机网络-3-局域网数据链路层原理与技术

    03 局域网数据链路层原理与技术 1 数据链路层概述 本章主要是局域网的数据链路层的技术标准 主要是以太网的介质和无线网的介质两大类 是一个直连线路上的介质控制 在无线路由器上 会有不同的第二层 手机到路由器 路由器到远端 数据链路层只能在
  • 前端笔面试题总结(2)

    1 linux中 vim有几种模式 如何进行这几种模式的切换 1 vim有三种模式 分别为命令模式 输入模式和底行模式 在输入模式有四种类型的命令 它们分别代表的含义不同 i I i是从光标所在位置开始输入 I是光标所在行的第一个非空白字符
  • Python爬虫:两个爬虫实战教你存储数据

    今天是大年三十 先预祝大家新年快乐 文末有红包福利哦 实战一 中国大学排名 前言 由于上一篇文章中教会了大家如何存储数据 但是由于篇幅过大 就没有加入实战篇 想必大家也等着急了吧 所以今天就为大家带来两篇实战内容 希望可以帮助到各位更好的认
  • Linux默认端口介绍

    文章目录 1 20 21端口 2 22端口 3 23端口 4 25端口 5 53端口 6 80端口 7 111端口 8 443端口 9 631端口 10 873端口 11 1521端口 12 3306端口 13 6379端口 14 8080
  • 70款常用的免费数据源分享(最新)

    每一个出色的数据可视化都是从干净的数据源开始的 大多数人认为收集大量数据是一项艰巨的工作 但事实并非如此 网上有成千上万的免费数据源 任何人都可以对其进行分析和可视化 在这里 我们收集了2019年政府 犯罪 健康 金融经济数据 营销社交媒体
  • arm 网页服务器,arm web服务器

    arm web服务器 内容精选 换一换 若DDK所在服务器操作系统以及架构为Arm aarch64 如果模型转换的耗时较长 可以使用numactl工具指定CPU核后进行模型转换 步骤如下 以DDK安装用户登录DDK所在服务器 执行su ro
  • 二维码名片的格式 - vcard

    二维码名片的格式 vcard 如果你希望生成的二维码名片可以被智能设备识别 并可以直接导入到通讯录中 那么就应遵循某种标准格式 常见的是生成vcard标准格式 一个简单的vcard名片格式例子参考如下 BEGIN VCARD VERSION
  • Android适配【入坑指南+解决痛点】

    概述 Android屏幕尺寸各异 而我们不可能根据各种尺寸都设计一套原型图去匹配 我们需要利用适配这一个过程把同一张原型图设计的样式尽可能以同样地视觉效果呈现在不同地屏幕上 Android适配最核心的问题有两个 其一 就是适配的效率 即把设
  • 对灵敏度分析技术进行建模(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 灵敏度
  • anaconda环境下安装tensorflow 无法使用matplotlib

    官网安装方式 1 安装anaconda 2 conda create n tensorflow pip python 2 7 3 source activate tensorflow4 tensorflow pip install igno
  • OLED透明屏控制:引领未来交互技术的创新突破

    OLED透明屏控制技术作为一项颠覆性的显示技术 正逐渐改变我们与屏幕互动的方式 其高透明度 触摸和手势交互 高画质和图像显示效果等特点 为用户提供了更智能 便捷的交互体验 同时也在各行各业中展现出无限的应用可能性 在此 尼伽将详细探讨OLE
  • vue中使用v-for动态的绑定ref

    第一种 div item div 在script这样调用 this refs tag index style display none 第二种 div item div 在script这样调用 this refs tag 0 style d
  • TOGAF10®标准中文版--(阶段C —数据架构阶段B )方法

    6 5 方法 6 5 1 数据结构 数据架构应该能够处理 静态数据 存储中的数据 动态数据 事务或服务 API 中的数据 使用中的数据 应用边界的数据 例如 GUI 开放数据 组织提供给公众使用并且自愿或合法要求提供的数据 将添加处理这些类
  • uni-app vue 3.0 沉浸式状态栏(线性渐变色)

    uni app vue 3 0 沉浸式状态栏 线性渐变色 index vue
  • Linux安装rmp包,缺少依赖包安装教程

    法一安装时 1 rpm ivh xxxx rpm nodeps force 法二联网情况下 2 yum install xxxx rpm
  • ubuntu 16.04 镜像下载

    下载地址 http mirror pnl gov releases xenial Ubuntu 14 04 5 LTS Trusty Tahr http releases ubuntu com 14 04
  • 面试重点算法题

    笔试如果用牛客会让自己写输入输出 参考https ac nowcoder com acm contest 320 question 面试手撕一般写函数即可 just for me 复习时间少 红色较难免看 黄色简单免看 黑色看一下代码 绿色
  • golang int和float计算 加减乘除

    go加减乘除 加载 go get github com shopspring decimal decimal手册地址 https godoc org github com shopspring decimal Decimal Sub 初始化
  • 拷贝构造函数中访问私有成员

    class Complex private double m real double m imag Complex const Complex c 将对象c中的数据成员值复制过来 m real c m real m imag c m ima
  • STL——Stack常见用法

    Stack 栈 是一种后进先出的数据结构 也就是LIFO last in first out 最后加入栈的元素将最先被取出来 在栈的同一端进行数据的插入与取出 这一段叫做 栈顶 使用STL的stack需要include一个头文件