stack & queue

  • 栈的实现--stack
    • stack图示:
    • stack相关操作:
      • 构造函数
      • 赋值操作
      • 数据存取
      • 大小操作
    • 队列实现--queue
      • 队列图示:
    • 队列相关操作
      • 构造函数
      • 赋值操作
      • 数据存取
      • 大小操作

栈的实现–stack

stack是一种先进后出(Frist In Last Out)的容器,stack容器只能对栈顶元素进行操作。因此需注意的是stack容器是不支持遍历的。但是栈可以返回栈中元素个数 size(),在进行入栈和出栈时记录元素个数,同时栈中还存在判空操作 empty();

stack图示:

stack相关操作:

构造函数

stack容器中封装了两个构造函数,无参构造函数和有参的拷贝构造函数

//stack<T> stk;
//stak(const stack& stk);
stack<int> stk1;
for (int i = 0; i < 10; i++)
{stk1.push(i + 1);
}stack<int>stk2(stk1);

stack容器在使用是头文件需包含进来

#include<stack>

赋值操作

//stack& operator=(const stack& stk);//重载=赋值操作
stack<int> stk3 = stk1;

数据存取

push(elem);//压栈
pop();//弹栈
top();//返回栈顶元素
while (!stk1.empty())
{cout << stk1.top() << " ";stk1.pop();
}
//输出为:10 9 8 7 6 5 4 3 2 1
  • deque& operator=(deque& deqT);//重载operator=运算符
deque<int>deqT1;
T1.push_back(1);
deque<int>deqT2;
deqT2 = deqT1;

大小操作

empty();
size();
if (stk1.empty())
{cout << "stk1已经是空的了" << endl;
}
cout << stk3.size() << endl;//10

队列实现–queue

队列与栈正相反,队列是一种先进先出(frist in frist out)的容器,它只允许在一端进行插入操作,另一端进行删除操作,队列中只有队头和队尾元素能够被外界获取,并且队列容器不能进行遍历操作。

队列图示:

队列相关操作

构造函数

/*
构造函数queue<T>que;queue(const queue<T>& que);
*/
queue<int> que1;
que1.push(1);
que1.push(2);
que1.push(3);
que1.push(4);
queue<int>que2(que1);

赋值操作

/*
赋值操作queue& operator=(queue<T>& que);
*/
queue<int>que3;
que3 = que2;
while (!que3.empty())
{cout << que3.front() << " ";//1 2 3 4que3.pop();
}

数据存取

/*
数据存取
push(elem);//将elem进入队尾
pop();//弹出队首元素
front();//获取队头元素
back();//获取队尾元素
*/
while (!que2.empty())
{cout << "队头元素为:" << que2.front() << endl;cout << "队尾元素为:" << que2.back() << endl;que2.pop();
}

大小操作

/*
大小操作empty();//判空操作size();//返回queue容器中元素个数
*/
if(!que2.empty())
{******
}
cout << "队列元素为:" << que2.size() << endl;

【STL容器讲解—栈队列】相关推荐

  1. C++ STL容器:栈(stack)

    目录 栈的定义 栈的结构 栈的基本操作 栈的定义方式和函数调用 经典例题 数组模拟 S T L STL STL 容器 s t a c k stack stack 做法 栈的定义 先进后出的线性表. 栈 ...

  2. 【STL容器讲解—deque】

    STL中deque容器讲解 deque容器的实现 相对于vector容器的区别 原因: deque内部工作原理 构造函数 容器操作 插入操作 deque容器的遍历操作 大小操作 插入和删除 数据存取 ...

  3. 记一道面试题:STL两个栈实现一个队列。

    面试题目 STL两个栈实现一个队列. 要求:只能使用栈的pop(),top()和push(),以及测试栈是否为空 empty()四个操作. 来实现队列的clear(), push(),pop(),ba ...

  4. C++STL之stack栈容器

    C++STL之stack栈容器 1. 再谈栈 回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的 ...

  5. STL中的栈结构和队列结构

    队列和栈都是线性结构,但他们都是受限的线性表,即他们的操作是线性表操作的子集,利用线性表作为栈和队列类的基类会大大减轻编程工作量,提高代码的重用性 栈结构--------头文件为<stack&g ...

  6. java中定义一个栈容器_Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  7. 用法 stl_C++STL 容器篇

    前言 上一章节主要是详细介绍了C++泛型编程基础,不清楚的可以回顾一下哦.本章节主要针对于C++STL(标准模板类库)做个详细介绍.标准模板类库也就是别人写的模板类,主要内容是各种数据结构的封装,以及 ...

  8. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  9. c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  10. 【小白学习C++ 教程】二十二、C++ 中的STL容器stack、queue和map

    @Author:Runsen STL 中的栈容器是一种容器适配器.在栈容器中,元素在一端插入并在同一端删除. stack 为了实现堆栈容器,我们需要在我们的程序中包含头文件<stack>. ...

最新文章

  1. 苹果设置网易邮箱收件服务器,如何在iPhone 3/4、iPod touch的邮件应用程序中使用IMAP服务...
  2. Python---多任务介绍以及Thread的基本使用
  3. 用户注册模块详解(30)
  4. python 向量_关于Python中的向量相加和numpy中的向量相加效率对比
  5. hadoop datanode启动失败
  6. Elasticsearch Reference [6.7] » Modules » Network Settings
  7. java)_Java NIO系列教程(一) Java NIO 概述
  8. weblogic jms消息 删除_利用 Kafka 设置可靠的高性能分布式消息传递基础架构
  9. jdom 读取xml_JDOM分析器–将XML文件读取为Java对象
  10. 数据结构题及c语言版 答案,数据结构(C语言版)1800道题及答案[完整版]
  11. 给大家推荐一款冰点文档下载器(免登陆,免积分)下载百度,豆丁,畅享网,mbalib,hp009,mab.book118文库文档
  12. 基于matlab的微分例题,matlab程序设计常微分方程编程例题答案数学.doc
  13. 传统的期货交易方式为计算机撮合成交,[期货知识]期货价格是怎么形成的-计算机撮合成交 - 南方财富网...
  14. 简体中文与繁体中文互转
  15. Markdownpad2报错: Html Rendering Error (An error occurred with the Html rendering component.)
  16. linux客户端连接iscsi,配置ISCSI客户端(LINUX)redhat5-iSCSI-INITIATOR
  17. 【WLAN】Android 13 p2p / wifi direct介绍
  18. 登陆mysql的命令行
  19. 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档)
  20. 简单爬取豆瓣电影相关信息

热门文章

  1. 怎么把图片转换成表格?这三种办法值得收藏
  2. [自我介绍]第一篇博客
  3. FOC和SVPWM的C语言代码实现
  4. 我的世界服务器修改npc,我的世界npc修改对话框 | 手游网游页游攻略大全
  5. codeforces 1384A(构造)
  6. HTML 教程-菜鸟教程
  7. wps word转pdf后出现空白页的删除方式
  8. 【随笔】一个可爱的圆函数模型
  9. c语言函数求圆面积,C语言编写函数,计算圆面积.
  10. linux系统中连接两个网桥,Linux 网桥代码分析 (二)