标准库容器概述

这篇具有很好参考价值的文章主要介绍了标准库容器概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

标准库容器概述

名称 类型 插入性能 删除性能 查找性能 何时使用
vector 顺序 平均 O(1) 在末尾;否则 O(N) 平均 O(1) 在末尾;否则 O(N) O(1) 默认容器。使用其他容器前先用分析器确认
list 顺序 O(1) 在开始和结束处,以及插入位置 O(1) 在开始和结束处,以及删除位置 O(1) 访问第一个或最后一个元素;否则 O(N) 极少使用。一般使用 vector
forward_list 顺序 O(1) 在开始处和插入位置 O(1) 在开始处和删除位置 O(1) 访问第一个元素;否则 O(N) 极少使用。一般使用 vector
deque 顺序 O(1) 在开始或结束处;否则 O(N) O(1) 在开始或结束处;否则 O(N) O(1) 通常不需要;使用 vector
array 顺序 N/A N/A O(1) 需要固定大小的数组来替换标准 C 风格数组
queue 容器适配器 取决于底层容器;对于 listdeque 是 O(1) 取决于底层容器;对于 listdeque 是 O(1) N/A 需要先进先出(FIFO)结构
priority_queue 容器适配器 取决于底层容器;对于 vector 是平均 O(log(N)),对于 deque 是 O(log(N)) 取决于底层容器;对于 vectordeque 是 O(log(N)) N/A 需要具有优先级的队列
stack 容器适配器 取决于底层容器;对于 listdeque 是 O(1),对于 vector 是平均 O(1) 取决于底层容器;对于 listvectordeque 是 O(1) N/A 需要先进后出(FILO)/后进先出(LIFO)结构
set multiset 排序关联 O(log(N)) O(log(N)) O(log(N)) 需要具有相等查找、插入和删除时间的排序元素集合
map multimap 排序关联 O(log(N)) O(log(N)) O(log(N)) 需要将键与值关联的排序集合,即关联数组
unordered_map unordered_multimap 无序关联/哈希表 平均情况 O(1);最坏情况 O(N) 平均情况 O(1);最坏情况 O(N) 平均情况 O(1);最坏情况 O(N) 需要将键与值关联,不需要元素排序
unordered_set unordered_multiset 无序关联/哈希表 平均情况 O(1);最坏情况 O(N) 平均情况 O(1);最坏情况 O(N) 平均情况 O(1);最坏情况 O(N) 需要具有相等查找、插入和删除时间的元素集合,不需要排序
bitset 特殊 N/A N/A O(1) 需要一组标志位

注意vector 应该是您的默认容器!实践中,在现代 CPU 上由于内存和缓存的工作方式,以及对于 listforward_list,您首先需要迭代到您想要插入或删除元素的位置,所以 vector 中的插入和删除操作通常比 listforward_list 更快。listforward_list 的内存可能是碎片化的,因此迭代比 vector 慢。文章来源地址https://www.toymoban.com/news/detail-811590.html

到了这里,关于标准库容器概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++标准库STL容器详解

    容器都是类模板,它们实例化后就成为容器类。用容器类定义的对象称为容器对象。对象或变量插入容器时,实际插入的是对象或变量的一个复制品。 顺序容器 1、元素在容器中的位置同元素的值无关,即容器不是排序的。 2、顺序容器包括:vector、deque、list。 关联容器 1、

    2024年02月10日
    浏览(32)
  • 15 标准模板库STL之容器1

    基础知识         1、vector和数组有点类似,但它比数组更好用。一般来说,数组的长度是不能动态拓展的,因此就需要考虑长度到底多大合适。长度不能过大,否则浪费内存;也不能过小,否则内存不够。vector正好弥补了这个缺陷,相当于一个可以自动改变数组长度的动

    2023年04月12日
    浏览(37)
  • C++——STL标准模板库——容器详解——list

    list:双向链表。list是一种分布式存储的线性表,每个节点分为数据域和指针域,其中指针域中包含一个指向前驱节点的指针和一个指向后续节点的指针,基本模型如下: 1、双向链表:每个元素都有一个前驱和一个后继,这种结构允许在链表的任何位置实现快速的插入和删除

    2024年01月16日
    浏览(48)
  • 22 标准模板库STL之容器适配器

    概述         提到适配器,我们的第一印象是想到设计模式中的适配器模式:将一个类的接口转化为另一个类的接口,使原本不兼容而不能合作的两个类,可以一起工作。STL中的容器适配器与此类似,是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一

    2024年02月05日
    浏览(41)
  • STL标准模板库 vector容器与迭代器入门

    vector 就是一个连续的数据 C++11 std::vector a ={1,4,2,6,7}; 可以使用花括号来定义 容器的功能就是存储数据 迭代器的功能就是指向数据,并且可以实现前后移动(指针)算法和容器的接口的存在 vector功能是长度可变的数组, 身在栈上 里面的数据存储在堆上 因为栈不可动态扩容

    2023年04月23日
    浏览(48)
  • 收集K8S容器的标准输出日志实践

    参考文章 k8s日志文件说明 一般情况下,容器中的日志在输出到标准输出 (stdout) 时,会以  *-json.log   的命名方式保存在 /var/lib/docker/containers 目录中。 这里能看到,有这么个文件:  /data/docker/containers/container id/*-json.log ,然后k8s默认会在  /var/log/containers   和  /var/log/pods 目

    2024年02月11日
    浏览(42)
  • 容器编排学习(五)卷的概述与存储卷管理

    容器中的文件在磁盘上是临时存放的,这给容器中运行的重要的应用程序带来一些问题 问题1:当容器崩溃或重启的时候,kubelet 会以干净的状态(镜像的状态)重启容器,容器内的历史数据会丢失 问题2:当容器被删除时 (k8s 没有停止容器的概念,只有创建、删除),容器内的数

    2024年02月09日
    浏览(41)
  • C++标准库 -- 顺序容器 (Primer C++ 第五版 · 阅读笔记)

    所有容器类都共享公共的接口,不同容器按不同方式对其进行扩展。 这个公共接口使容器的学习更加容易—我们基于某种容器所学习的内容也都适用于其他容器。 每种容器都提供了不同的性能和功能的权衡。 下表列出了标准库中的顺序容器, 所有顺序容器都提供了 快速顺序

    2023年04月17日
    浏览(85)
  • 数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月10日
    浏览(69)
  • 【C++】容器篇(一)—— vector 的基本概述以及模拟实现

    前言: 在之前,我们已经对 string类进行了基本的概述,并且手动的实现了string类中常用的接口函数。本期,我将带领大家学习的是STL库中的一个容器 -- vector 的学习。相比于之前的string类,本期的 vector 相对来说实现起来略微难一点,难点就在于要考虑关于 “ 迭代器失效 ”

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包