当前位置: 首页 > 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.dtcms.com/a/327022.html

相关文章:

  • Appium+Python 实现移动应用自动化测试:从基础到实战
  • STFT、log-mel、MFCC 的区别
  • 梳理一下实现3D显示的途径有哪些?
  • QT(概述、基础函数、界面类、信号和槽)
  • Qt之QMetaEnum的简单使用(含源码和注释)
  • [激光原理与应用-253]:理论 - 几何光学 - 变焦镜头的组成原理及图示解析
  • excel-随笔记
  • 单例模式,动态代理,微服务原理
  • [特殊字符]深度解析 FastMCP:重构MCP应用开发的全维度革命
  • 当机械臂装上「智能大脑」:Deepoc具身智能模型如何重构传统自动化​
  • 力扣经典算法篇-50-单词规律(双哈希结构+正反向求解)
  • 【Golang】pprof 使用介绍:从数据采集到可视化分析
  • windows版本:Prometheus+Grafana(普罗米修斯+格拉法纳)监控 JVM
  • Webpack 介绍与使用的详细介绍
  • ChatGpt 5系列文章1——编码与智能体
  • 地图可视化实践录:显示地理区域图
  • 【Bug经验分享】由jsonObject-TypeReference引发的序列化问题
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南
  • Table Foundation Models: on knowledge pre-training for tabular learning(每日一文)
  • 安卓主题定制实践:17.45MB轻量级主题引擎技术解析
  • Text Animator for Unity快速上手
  • Milvus入门:开源向量数据库,解锁大模型时代的高效检索
  • 面试八股之从jvm层面深入解析Java中的synchronized关键字
  • 【AI绘画】Stable Diffusion webUI 常用功能使用技巧
  • JVM 内存大对象监控和优化实践
  • AT F-Intervals 题解
  • 【KO】大厂常见问题
  • 局域网远程控制/推流
  • 从裸机到云原生:Linux 操作系统实战进阶的“四维跃迁”
  • 嵌入式调试利器:STM32F429移植letter-shell实战