STL库的stack容器

  • 1、构造函数
  • 2、增
    • 2.1 push()
    • 2.2 emplace()
    • 两者区别
  • 3、删 pop()
  • 4、改
    • 4.1 swap()交换
  • 5、查 top()
  • 6、判空 empty()
  • 7、大小 size()

stack

  1. 栈,一个先进后出的容器。
  2. stack是一种操作受限制的线性表,只能通过top()来访问栈顶元素。
  3. 不支持 “<<” ,不能使用“<<”直接输出栈内所有元素,只能使用top()函数获取栈顶元素;
  4. 集合( Stack / Queue / Hashtable 都没有索引),即不支持遍历,只能通过while循环,通过top()和pop()来完成栈内元素的查询。

1、构造函数

  1. stack s; //stack采用模板类实现, stack对象的默认构造形式:

    stack s1; // 空栈,默认构造函数

  2. stack(const stack &s); //拷贝构造函数

    stack s2(s1); // 拷贝构造函数
    stack s2=s1; // 拷贝构造函数

#include <iostream>
#include <stack>
using namespace std;int main() {//------------------1.构造函数 和 拷贝构造函数stack<int> s; // 定义一个空栈cout << s.empty() << endl; // 1stack<int> s1;s1.push(1);s1.push(2);s1.push(3);stack<int>s2(s1);stack<int>s3 = s1;while (s2.empty() == 0) {cout << s2.top() << " "; // 3 2 1s2.pop();}while (s3.empty() == 0) {cout << s3.top() << " "; // 3 2 1s3.pop();}return 0;
}

2、增

2.1 push()

push(x):将x入栈,时间复杂度为O(1)

2.2 emplace()

emplace(x): 将x入栈

两者区别

对于emplace,C++标准库的简要说明就是构造和插入元素,emplace可以直接传入构造对象需要的元素,然后自己调用其构造函数!
大概可以理解为push能做的,emplace都能做。

push是得传入得对象先得造好,再复制过去插入;而emplace则可以自己拿到构造对象所需得元素构造出来,直接插入即可。

emplace相比于push省去了复制这步,即使用emplace这种操作会更节省内存。

3、删 pop()

pop():出栈顶元素。

4、改

4.1 swap()交换

int main() {//------------------ swap()stack<int> s;s.emplace(9);s.emplace(6);s.emplace(15);s.emplace(-3);stack<int> s1;s1.push(1);s1.push(2);s1.push(3);s.swap(s1);while (s1.empty() == 0) {cout << s1.top() << " "; // -3 15 6 9s1.pop();}cout << endl;while (s.empty() == 0) {cout << s.top() << " "; // 3 2 1s.pop();}return 0;
}

5、查 top()

top():获取栈顶元素,时间复杂度为O(1)
stack不支持遍历,只能通过top函数来遍历栈;

#include <iostream>
#include <stack>
using namespace std;int main() {//------------------1. resize(n)将list的长度改为nstack<int> s1;s1.push(1);s1.push(2);s1.push(3);// 不支持遍历while (!s1.empty()) {cout << s1.top() << "  "; // 3  2  1s1.pop(); // 删除栈顶元素}return 0;
}

6、判空 empty()

empty():判断栈是否为空。

7、大小 size()

size():获得栈元素个数

【C++】 STL库的stack容器相关推荐

  1. STL库:stack和queue

    STL库:stack和queue 文章目录 STL库:stack和queue 1.STL库中stack的官方介绍 2.stack的常用接口 3.stack的模拟实现 4.STL库中queue的官方介绍 ...

  2. [C++STL]C++实现stack容器适配器

    代码如下: #include <iostream> #include <deque> using namespace std;template<typename T,ty ...

  3. 简单实现STL库中的容器vector

    一.简要说明 本篇博客实现的容器仅仅可存放任意基本数据类型的元素,但是还没有实现容器可存放容器类型的元素(类似于多维数组). 二.代码实现 2.1 数组声明 #define INCREASEMENT ...

  4. C++ 常用的STL库

    C语言: 数据结构有很多种-数组-链表-队列-栈-树 需要自己写代码实现 C++ 提供了STL库,里面已经完成了所有数据结构,内部全部都是使用模板实现的. C++提供了数据结构的 模板库,给你用.ST ...

  5. java stl stack_C++标准库之stack

    C++库以提供"模板"为主.所谓模板,是指不必预先制定类型的函数或类.我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来 ...

  6. C++STL的stack容器

    C++STL的stack容器 stack 基本概念 stack 常用接口 stack 基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 ...

  7. STL库容器vector at函数

    STL库容器vector at函数 v.at(n)返回v指定位置n的元素.at函数比[]运算符更加安全, 因为它不会让你去访问到越界的元素,一旦越界将会在运行时中止程序并抛出一个异常std::out_ ...

  8. C++(STL):24 ---序列式容器stack用法

    1.stack的定义 要使用stack,应先添加头文件#include <stack>, 并在头文件下面加上 "using namespace std" //定义 st ...

  9. STL stack 容器

    STL stack 容器 Stack简介 stack是堆栈容器,是一种"先进后出"的容器.       stack是简单地装饰deque容器而成为另外的一种容器.       #i ...

最新文章

  1. 品友互动入榜“AI First——2017-2018年中国人工智能先行企业榜TOP10”
  2. 中国厂商导致美国断网很稀奇?咱们早就被坑过了
  3. 3889=神奇的函数
  4. Win10安装玩Ubuntu19.04后,bios和grub页面都没有Windows启动项,无法进入Windows
  5. 河南省计算机大学应用水平考试,河南省大学计算机等级考试选择题(文管二级)...
  6. CAS5.2x单点登录(一)——搭建cas服务器
  7. java反射机制原理详解_java反射机制的详细讲解
  8. centos7设置成文件服务器,CentOS7服务器架设ftp过程
  9. Dalvik指令备忘
  10. 【遥感物候】C#遥感数据GIMMS 3G NDVI头文件批量生成器(几何校正)
  11. 怎么实现阴影效果呢?
  12. 路由转发采用递归查询
  13. 理解Java - JDK动态代理原理
  14. 写给五笔初学者,一家之言,欢迎拍砖
  15. 娓娓道来图模型、图查询、图计算和图学习知识
  16. leaflet保存pm绘图geojson数据
  17. mysql explain字段意思解释
  18. ibm邮件怎么撤回_请问LotusNotes具备发出邮件后撤回 – 手机爱问
  19. cdoj 1354 柱爷很忙
  20. 头像照片汇聚logo视频片头ae竖屏模板

热门文章

  1. [轻音乐] - 班得瑞专辑[14CD]
  2. 点评阿里云盛大云代表的云计算IaaS产业---中国云计算
  3. Python脚本操作Excel实现批量替换
  4. fatal unable to auto-detect email address (got ‘...@...(none)‘)
  5. 程序员编程艺术:面试和算法心得
  6. ML 学海拾贝 07/03/2018
  7. Java 小项目——字符界面收银台(优化版)
  8. 神经网络和深度神经网络,图神经网络和神经网络
  9. Cadence Orcad Capture新建原理图Symbol及新建和添加元件库到工程的方法图文教程及视频演示
  10. javaSE<String和StringBuffer和StringBuider>day11