zoukankan      html  css  js  c++  java
  • STL之stack容器和queue容器

    摘要:本文主要介绍了两种容器——stack容器和queue容器。

    1、基本概念

      stack容器 queue容器

    容器介绍

    stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,

    形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了

    最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允

    许有遍历行为。

    有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.

    Queue是一种先进先出(First In First Out,FIFO)的数据结构,

    它有两个出口,queue容器允许从一端新增元素,从另一端移

    除元素。

    迭代器

    Stack所有元素的进出都必须符合”先进后出”的条件,只有stack顶端的元素,

    才有机会被外界取用。Stack不提供遍历功能,也不提供迭代器。

    Queue是一种先进先出(First In First Out,FIFO)的数据结构,

    它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。

     

    2、常用API

      stack容器 queue容器
    API 意义 API 意义
    构造函数

    stack<T> stkT

    stack采用模板类实现,

    stack对象的默认构造形式

     queue<T> queT  queue采用模板类实现,queue对象的默认构造形式

    stack(const stack &stk)

    拷贝构造函数

     queue(const queue &que)  拷贝构造函数
    存取、插入和删除操作     push(elem)  往队尾添加元素
    pop() 从队头移除第一个元素
    back() 返回最后一个元素
    front() 返回第一个元素

    赋值操作

    stack& operator=(const stack &stk)
    重载等号操作符  queue& operator=(const queue &que)  重载等号操作符

    数据存取操作

    push(elem) 向栈顶添加元素       
    pop() 从栈顶移除第一个元素
    top() 返回栈顶元素

    stack大小操作

    empty()

     判断堆栈是否为空  empty()  判断队列是否为空

    size()

    返回堆栈的大小 size() 返回队列的大小

    3、代码示例

     1 #include<iostream>
     2 #include <stack>
     3 #include <queue>
     4 
     5 using namespace std;
     6 
     7 void test01() {
     8     stack<int>s;  //定义一个stack容器
     9     s.push(10);   //将数压入容器
    10     s.push(20);
    11     s.push(30);
    12     s.push(40);
    13 
    14     while (s.size()!=0)
    15     {
    16         cout << s.top() << endl;  //只可以栈顶输出
    17         s.pop();    //将输出的数弹出  , 输出40,30,20,10
    18     }
    19     cout << s.size() << endl;  //完全弹出变成0
    20 }
    21 
    22 void test02() {
    23     queue<int>q;
    24     q.push(10);
    25     q.push(20);
    26     q.push(30);
    27     q.push(40);
    28 
    29     while (!q.empty())
    30     {
    31         cout << q.front() << endl;
    32         cout << q.back() << endl;  //头尾均可以输出
    33 
    34         q.pop();  //将队头弹出
    35     }
    36     cout << q.size() << endl;
    37 }
    38 
    39 int main() {
    40     test01();
    41     test02();
    42     system("pause");
    43     return 0;
    44 }
  • 相关阅读:
    C# DataGridView隔行显示不同的颜色
    C#也能动态生成Word文档并填充数据
    [zz CSDN]上班族饮食十大“夺命”恶习
    VB设置网卡的IP地址
    图片按钮带检测
    让IIS支持FLV
    每天看超过500封简历的HR详谈求职之道
    鼠标移动,背景变色
    Panabit 个人理解摘要
    QcCQ宠大乐斗企鹅鉴定及评分标准[测试版]
  • 原文地址:https://www.cnblogs.com/lzy820260594/p/11381987.html
Copyright © 2011-2022 走看看