当前位置: 首页 > news >正文

C++ STL容器:序列式容器-队queue,deque

摘要:

   CC++ STL(Standard Template Library,标准模板库)在C++编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C++程序的开发效率和代码质量。

STL 容器 分为 2 大类 , 分别是“序列式容器” 和“关联式容器 ”。

  • 序列式容器:每个元素都有固定位置,取决于插入时机和地点,其底层为线性序列的数据结构,里面存储的是元素本身。
  • 关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,其里面存储的是< key , value >结构的键值对,在数据检索时比序列式容器效率更高。

   本系列博文将详细介绍C++STL的各种容器的特性优缺点,以及其常用算法方法等。本文介绍的是序列式容器-队queue,deque。

(开发环境:VScode,C++17)

关键词C++STL数据存储数据类型队列queuedeque

声明:本文作者原创,转载请附上文章出处与本文链接。

文章目录

      • 摘要:
      • 正文:
        • queue
          • 常用函数:
          • 使用例子:
        • deque
          • 常用函数:
          • 使用例子:
      • 推荐阅读

正文:

queue

在C++的STL(Standard Template Library)中,queue 是一个容器适配器,它提供了队列(FIFO - First In First Out)的基本操作。队列是一种特殊的线性数据结构,只允许在一端插入元素(称为队尾或后端),而在另一端删除元素(称为队首或前端)。(有需要更深入了解数据结构队的,可看同专栏下数据结构分支)。

常用函数:
  • push():在队尾插入一个元素。
  • pop():删除队首的元素。
  • front():返回队首元素的引用。
  • back():返回队尾元素的引用。
  • empty():检查队列是否为空。
  • size():返回队列中的元素数量。
使用例子:
#include <iostream>
#include <queue>int main()
{std::queue<int> q;// 插入元素q.push(1);q.push(2);q.push(3);// 访问元素std::cout << "Front element: " << q.front() << '\n';std::cout << "Back element: " << q.back() << '\n';// 删除元素q.pop();std::cout << "Front element after pop: " << q.front() << '\n';// 检查队列是否为空和大小if (q.empty()) {std::cout << "Queue is empty.\n";}else {std::cout << "Queue is not empty. Size: " << q.size() << '\n';}return 0;
}
deque

在C++的STL(Standard Template Library)中,deque(双端队列)是一个容器,它支持在序列的开头和结尾进行元素的快速插入和删除操作。与vector不同,deque不需要在内存中连续存储元素,因此它允许在容器的两端进行高效的插入和删除操作,而不需要重新分配整个容器。

常用函数:
  • push_front():在deque的前端插入一个元素。
  • push_back():在deque的后端插入一个元素。
  • pop_front():删除deque的前端元素。
  • pop_back():删除deque的后端元素。
  • front():返回deque的前端元素的引用。
  • back():返回deque的后端元素的引用。
  • empty():检查deque是否为空。
  • size():返回deque中的元素数量。
  • begin() 和 end():返回指向deque中第一个元素和最后一个元素之后的位置的迭代器。
  • insert():在指定位置插入一个或多个元素。
  • erase():删除指定位置的元素或指定范围内的元素。
使用例子:
#include <iostream>
#include <deque>int main()
{std::deque<int> d;// 插入元素d.push_front(1);d.push_back(2);d.push_front(3);d.push_back(4);// 访问元素std::cout << "Front element: " << d.front() << '\n';std::cout << "Back element: " << d.back() << '\n';// 删除元素  d.pop_front();  d.pop_back();  std::cout << "Front element after pops: " << d.front() << '\n';// 遍历dequefor (int i : d) {std::cout << i << ' ';}std::cout << '\n';// 检查deque是否为空和大小if (d.empty()) {std::cout << "Deque is empty.\n";}else {std::cout << "Deque is not empty. Size: " << d.size() << '\n';}return 0;
}

推荐阅读

博客主页:https://blog.csdn.net/weixin_45068267
(客官逛一逛,有许多其它有趣的专栏博文)

C/C++专栏:https://blog.csdn.net/weixin_45068267/category_12268204.html
(内含其它STL容器使用及对应的数据结构实现)

http://www.lryc.cn/news/394887.html

相关文章:

  • 简谈设计模式之单例模式
  • 在Spring Boot中实现多线程任务调度
  • dify/api/models/account.py文件中的数据表
  • SQLAlchemy迁移数据库
  • Django文档简化版——Django快速入门——创建一个基本的投票应用程序
  • 安全防御第三天(笔记持续更新)
  • 【12321骚扰电话举报受理中心-短信验证安全分析报告】
  • 杂项——循迹模块调节方法
  • 揭秘:源代码防泄密的终极秘籍
  • avcodec_send_packet函数阻塞
  • 一个parquet-go例子
  • 扩散模型笔记
  • 上海-LM科技(面经)
  • 用 Echarts 画折线图
  • C++的map / multimap容器
  • 双向链表 -- 详细理解和实现
  • WebGIS面试题
  • 代码随想录算法训练营:21/60
  • 数据结构——二叉树之c语言实现堆与堆排序
  • #数据结构 链表
  • 单片机软件架构连载(4)-结构体
  • 工厂方法模式在金融业务中的应用及其框架实现
  • python库(6):Pygments库
  • 金斗云 HKMP智慧商业软件 任意用户创建漏洞复现
  • 前端JS特效第24集:jquery css3实现瀑布流照片墙特效
  • 区块链论文速读A会-ISSTA 2023(2/2)如何检测DeFi协议中的价格操纵漏洞
  • 权力之望怎么下载客户端 权力之望一键下载
  • Oracle PL/SQL 循环批量执行存储过程
  • kafka 生产者
  • Powershell 获取电脑保存的所有wifi密码