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

STL容器的使用时机

文章目录

  • STL容器的使用时机
    • vector的使用场景
    • deque的使用场景
    • vector与deque的比较
    • list的使用场景
    • set的使用场景
    • map的使用场景

STL容器的使用时机

vectordequelistsetmultisetmapmultimap
典型内存结构单端数组双端数组双向链表二叉树二叉树二叉树二叉树
可随机存取对key而言:不是
元素搜寻速度非常慢对key而言:快对key而言:快
元素安插移除尾端头尾两端任何位置----

vector的使用场景

  • vector的使用场景:软件历史操作记录的存储等,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述。

deque的使用场景

deque的使用场景:排队购票系统等,对排队者的存储可以采用deque,支持头端的快速移除,尾端的快速添加。如果采用vector,则头端移除时,会移动大量的数据,速度慢

vector与deque的比较

vector.at()比deque.at()效率高,比如vector.at(0)是固定的,deque的开始位置 却是不固定的。(deque底层是使用了中控器维护的内存指针)

如果有大量释放操作的话,vector花的时间更少,这跟二者的内部实现有关。(deque底层实现是一个中控器维护了不同的地址)

deque支持头部的快速插入与快速移除,这是deque的优点

list的使用场景

比如公交车乘客的存储,随时可能有乘客下车,支持频繁的不确实位置元素的移除插入。

set的使用场景

比如对手机游戏的个人得分记录的存储,存储要求从高分到低分的顺序排列。

map的使用场景

比如按ID号存储十万个用户,想要快速要通过ID查找对应的用户。二叉树的查找效率,这时就体现出来了。如果是vector容器,最坏的情况下可能要遍历完整个容器才能找到该用户

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

相关文章:

  • Jenkins 基本使用文档
  • SQL 生成日期与产品的所有组合:CROSS JOIN(笛卡尔积)
  • 「机器学习」:金融风控贷款违约预测,天池比赛解决详细思路
  • 超详细!VMware12 安装win7操作系统
  • Gartner 《IAM for LLM-Based AI Agents》学习心得
  • 从GPT-2到gpt-oss:架构演进分析
  • Git 常用命令速查表
  • Kafka的一条消息的写入和读取过程原理介绍
  • excel-随笔记
  • 基于Hadoop的农产品价格数据分析与可视化【Springboot】
  • 关于数据库的restful api接口工具SqlRest的使用
  • Next.js 中间件:自定义请求处理
  • 自动驾驶 HIL 测试:构建 “以假乱真” 的实时数据注入系统
  • 【Go】Gin 超时中间件的坑:fatal error: concurrent map writes
  • [java八股文][Mysql面试篇]架构
  • 虚拟机一站式部署Claude Code 可视化UI界面
  • 从裸机到云原生:Linux 操作系统实战进阶的“四维跃迁”
  • C++11-下
  • 系统架构设计师备考之架构设计实践知识
  • Perl——文件操作
  • 导入文件到iPhone实现
  • 【网站深入seo方法】
  • Rocky Linux 10 部署 Kafka 集群
  • 工业相机镜头选型
  • 云计算核心技术
  • iPhone 17 Pro 为何被指像充电宝?
  • Stereolabs ZED相机 选型指南:双目 / 单目、短距 / 长距,如何为机器人视觉系统匹配最优方案?
  • 力扣11:盛水最多的容器
  • 深入C#异步编程基石:BeginInvoke与EndInvoke全解析
  • 使用ceph-deploy安装和配置RADOS Gateway (RGW)并使用S3访问集群