C++回顾(二十二)—— stack容器 与 queue容器
创始人
2024-06-01 13:38:53

22.1 stack容器

(1) stack容器简介

  • stack是堆栈容器,是一种“先进后出”的容器。
  • stack是简单地装饰deque容器而成为另外的一种容器。
  • 添加头文件:#include

(2)stack对象的默认构造

  • stack采用模板类实现, stack对象的默认构造形式: stack stkT;
    stack stkInt; //一个存放int的stack容器。
    stack stkFloat; //一个存放float的stack容器。
    stack stkString; //一个存放string的stack容器。

    //尖括号内还可以设置指针类型或自定义类型。

(3)stack的push()与pop()方法

  • stack.push(elem); //往栈头添加元素
  • stack.pop(); //从栈头移除第一个元素

(4)stack对象的拷贝构造与赋值

  • stack(const stack &stk); //拷贝构造函数
  • stack& operator=(const stack &stk); //重载等号操作符

(5)stack的数据存取

  • stack.top(); //返回最后一个压入栈元素

(6)stack的大小

  • stack.empty(); //判断堆栈是否为空
  • stack.size(); //返回堆栈的大小

完整示例代码:

#include 
#include 
#include 
#include using namespace std;int main()
{stack s;srand(time(NULL));int num;for (int i = 0; i < 10; i++){num = rand() % 10;s.push(num);cout << num << "进栈成功" << endl;}cout << "********************" << endl;cout << "栈顶元素是 " << s.top() << endl;cout << "栈的大小" << s.size() << endl;//栈和队列不存在遍历,不存在迭代器//s.begin();cout << "********************" << endl;while (!s.empty()){cout << s.top() << "出栈" << endl;s.pop();}return 0;
}

运行结果:
在这里插入图片描述

22.2 queue容器

(1)queue容器简介

  • queue是队列容器,是一种“先进先出”的容器。
  • queue是简单地装饰deque容器而成为另外的一种容器。
  • 需要添加头文件:#include

(2)queue对象的默认构造

  • queue采用模板类实现,queue对象的默认构造形式:queue queT; 如:
    queue queInt; //一个存放int的queue容器。
    queue queFloat; //一个存放float的queue容器。
    queue queString; //一个存放string的queue容器。

    //尖括号内还可以设置指针类型或自定义类型。

(3)queue的push()与pop()方法

  • queue.push(elem); //往队尾添加元素
  • queue.pop(); //从队头移除第一个元素

(4)queue对象的拷贝构造与赋值

  • queue(const queue &que); //拷贝构造函数
  • queue& operator=(const queue &que); //重载等号操作符

(5)queue的数据存取

  • queue.back(); //返回最后一个元素
  • queue.front(); //返回第一个元素

(6)queue的大小

  • queue.empty(); //判断队列是否为空
  • queue.size(); //返回队列的大小

完整示例代码:

#include 
#include using namespace std;int main()
{queue q;for (int i = 0; i < 10; i++){q.push(i);cout << i << "进队成功" << endl;}cout << "********************" << endl;cout << "队头元素" << q.front() << endl;cout << "队尾元素" << q.back() << endl;cout << "队列大小" << q.size() << endl;cout << "********************" << endl;while (!q.empty()){cout << q.front() << "出队" << endl;q.pop();}return 0;
}

运行结果:
在这里插入图片描述

相关内容

热门资讯

脑机接口遇上市场接口,托举民营... 21世纪经济报道记者柳宁馨 杭州报道当一个社会为创新者提供足够的空间,技术进步才会真正转化为公共福祉...
最高100万元,证券期货“吹哨... (来源:千龙网)近日,证监会、财政部修订发布《证券期货违法行为“吹哨人”奖励工作规定》(以下简称《规...
厘清“西贝事件”,给预制菜一个... 刚刚,国务院食安办等部门宣布将对预制菜国家标准等公开征求意见。近日西贝关店事件引发热议,有网友呼吁“...
我国首次在太空微重力条件下制造...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:财联社) 财...
革命圣地遵义与延安即将实现动车... 1月26日零时起,全国铁路将实行2026年一季度列车运行图,届时革命圣地遵义与延安将实现动车直达。记...