• stack容器、queue容器(20221116)


    一、stack容器

    1、基本概念

    先进后出的数据结构,只有一个出口(栈顶)。

    栈不允许有遍历行为,可以判断是否为空(empty),也可以知道其元素个数(size)

    2、常用接口

    构造函数:

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

    stack(const stack &stk); //拷贝构造函数

    赋值操作:等号操作符

    数据存取:

    push(elem); //向栈顶添加元素

    pop();

    top();//返回栈顶元素

    大小操作:

    empty(); //判断堆栈是否为空

    size();//返回栈的大小

    1. //栈容器
    2. void test01()
    3. {
    4.     stack<int>stk;
    5.     stk.push(10);
    6.     stk.push(20);
    7.     stk.push(30);
    8.     stk.push(40);
    9.     //只要栈不为空,则返回栈顶元素并执行出栈操作
    10.     cout << "栈的元素个数:" << stk.size() << endl;//4
    11.     while (!stk.empty())
    12.     {
    13.         cout << "栈顶元素:" << stk.top() << endl;
    14.         stk.pop();
    15.     }
    16.     cout << "栈的元素个数:" << stk.size() << endl;//0
    17. }

    二、queue容器

    1、基本概念

    先进先出的容器,有两个出口;

    允许从一端新增元素,另一端移除元素;

    队列中只要队头和队尾才可以被外界使用,因此队列不允许有遍历行为;

    入队push();出队pop();

    2、常用接口

    构造函数:

    queueq; // queue采用模板类实现,queue对象的默认构造形式

    queue(const queue &q); //拷贝构造函数

    赋值操作:等号操作符

    数据存取:

    push(elem); //向队尾添加元素

    pop();

    front();//返回队头元素

    back();//返回队尾元素

    大小操作:

    empty(); //判断是否为空

    size();//返回队列的大小

    1. class Person {
    2. public:
    3.     string m_name;
    4.     int m_score;
    5.     Person(string name, int score)
    6.     {
    7.         this->m_name = name;
    8.         this->m_score = score;
    9.     }
    10. };
    11. //队列Queue
    12. void test02()
    13. {
    14.     queueq;
    15.     //准备数据
    16.     Person p1("张三", 89);
    17.     Person p2("张四", 90);
    18.     Person p3("李五", 92);
    19.     Person p4("王六", 93);
    20.     Person p5("宋七", 99);
    21.     q.push(p1);
    22.     q.push(p2);
    23.     q.push(p3);
    24.     q.push(p4);
    25.     q.push(p5);
    26.     //只要队列不为空,则查看队头队尾元素
    27.     cout << "队列的元素个数:" << q.size() << endl;//5
    28.     while (!q.empty())
    29.     {
    30.         cout << "队头元素:  " << "姓名:"<front().m_name << "分数:" << q.front().m_score<< endl;
    31.         cout << "队尾元素:  " << "姓名:"<back().m_name<< "分数:" << q.back().m_score<< endl;
    32.         q.pop();
    33.     }
    34.     cout << "队列的元素个数:" << q.size() << endl;//0
    35. }

  • 相关阅读:
    MAC和安卓手机文件传输OpenMTP
    Linux学习笔记(7)
    修改this的指向
    函数入门及C Primer Plus第五章编程题
    Git分布式版本控制系统与github
    Linux 服务器监控
    6 RabbitMQ之死信队列
    商业精英的首选
    大气化学在线耦合模式WRF/Chem
    【BP回归预测】改进的鲸鱼算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 2184期】
  • 原文地址:https://blog.csdn.net/qq_60143666/article/details/127887429