• deque和stack容器


    deque和stack容器

     

    一、             deque容器

           双端数组,可以在头部尾部插入弹出元素

    deque容器与上章节类似

    在其基础上增加了push_back()、push_front()、pop_back()、pop_front()函数

    push_back()               //在容器尾部添加一个数据

    push_front()              //在容器头部插入一个数据

    pop_back()                 //删除容器最后一个数据

    pop_front()                //删除容器第一个数据

    代码走起

    使用stl提供的vector,引用头文件       #include "deque"

    代码示例

    #include <iostream>

    using namespace std;

    #include "deque"

    void DequeTest()

    {

    deque<int> d1;

    d1.push_back(1);              //在尾部插入数据 1

    d1.push_back(3);              //在尾部插入数据 3

    d1.push_back(5);              //在尾部插入数据 5

    d1.push_front(-11);          //在头部插入数据 -11

    d1.push_front(-33)           //在头部插入数据 -33

    d1.push_front(-55)           //在头部插入数据 -55

    cout << "头部元素:" << d1.front() << endl;                    //头部元素:-55

    cout << "尾部元素:" << d1.back() << endl;                    //尾部元素:5

    //①迭代输出deque

    for( deque<int>::iterator it = d1.begin() ; it != d1.end() ; it++ )

    {

             cout << *it << "       ";

    }

    d1.pop_front();                  //弹出(删除)头部元素

    d1.pop_back();                   //弹出(删除)尾部元素

    //②迭代输出deque

    for( deque<int>::iterator it = d1.begin() ; it != d1.end() ; it++ )

    {

             cout << *it << "       ";

    }

    }

    查找某个值在数组(deque)中的下标值

    接上面代码

    //查找3 在数组(deque)中的下标值

    deque<int>::iterator it = find( d1.begin() , d1.end() , 3);                   //返回迭代器的位置:it

    if ( it != d1.end() )

    {

             cout << "值3的下标是" << distance(d1.begin() , it ) << endl;                 // distance函数找到下标

    }

    else

    {

             cout << "没有找到" << endl;

    }

    注:需添加头文件 algorithm.h

    二、             stack

    简介

    stack是堆栈容器,是一种“先进后出”的容器

    stack是简单的装饰deque容器而成的另外一种容器

    引用头文件 <inlcude "stack>

    代码走起

    #include <iostream>

    using namespace std;

    #include "stack"

    void StackTest()

    {

    stack<int> s;

    //入栈 0 1 2 3 4 5 6 7 8 9

    for( int i = 0 ; i < 10 ; i++ )

    {

             s.push( i + 1);

    }

    cout << "栈的大小" << s.size() << endl;

    //出栈

    while ( !s.empty() )

    {

    int nTmp = s.Top();                 //获取栈顶元素

    cout << nTmp << "       ";               //输出值:10 9 8 7 6 5 4 3 2 1 0  先入后出

    s.pop();                  //弹出栈顶元素

    }

    }

    注:stack栈中可以放类、类指针等

  • 相关阅读:
    BIOS/MBR UEFI/GPT关系与区别-资料整理
    raid 简单了解
    MBR主引导记录
    linux 安装vscode
    chrome 获得点击按钮时的事件
    python计算纪念日相关
    python error: curl: (1) Protocol "'https" not supported or disabled in libcurl
    linux go with vscode
    postman 进阶技巧
    mysql常用时间函数与类型转换
  • 原文地址:https://www.cnblogs.com/zzhua/p/5940061.html
Copyright © 2020-2023  润新知