码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C++】 容器区别


    目录

    序列容器

    1.Vector

    2.deque

    3.list

    4.forward_list

    5.queue

    6.priority_queue

    7.stack

    8.array

    关联容器

    1.map

    2.multimap

    3.set

    4.multiset

    无序关联容器


    序列容器

    1.Vector

    • 数组的一种类表示。
    • 自动内存管理功能,可以动态地改变vector对象的长度。
    • 提供对元素的随机访问。
    • 在尾部添加删除元素的时间是固定的,但在头部和中部插入删除元素的复杂度为线性时间。
    • 可反转容器概念模型,提供rbegin()和rend()。
    • 默认使用该类型

    2.deque

    • 在STL中,实现类似vector容器,支持随机访问。
    • 开始位置插入删除的时间是固定的。所以如果多数操作发生在序列的起始和结尾处,应考虑deque。
    • 不一定是顺序存储

    3.list

    • 双向链表
    • 任意位置插入删除的时间是固定的
    • vector强调的是通过随机访问进行快速访问,list强调的是元素的快速插入和删除
    • list模板类有链表专用的成员函数:merge(将两个有序链表合并成另一个有序链表)、remove、sort(使用<运算符排序)、splice(插入)、unique(连续的相同元素压缩成一个)

    4.forward_list

    • 单链表

    5.queue

    • 队列
    • 限制比deque更多。不允许随机访问,不允许遍历。
    • 可以把元素添加到队尾、从队首删除元素、查看队首和队尾的值、检查元素数目和检测队列是否为空

    6.priority_queue

    • 默认底层类是vector。
    • 最大的元素被移到队首,可以修改确定的方式greater()

    7.stack

    • 栈
    • 限制比vector多。不允许随机访问,不允许遍历。
    • 可以压入栈顶、从栈顶弹出元素、查看栈顶的值、检查元素数目、检测是否为空
    • 可queue相似。如果要使用栈中的值,首先使用top()检索这个值,然后用pop()将他弹出

    8.array

    • 并非STL容器,因为其长度是固定的。
    • 不能调整容器大小,但像vector一样存在安全检索的at()。可以将很多标准STL算法用于他

    关联容器

    容器X::value_type指出存储在容器中的值类型。关联容器X::key_type指出键的类型。

    底层是树

    1.map

    • 有序排放
    • 元素不可以重复
    • map就是存储pair类型对象的容器
    • 对map容器而言,它的迭代器其实指向的是一个pair类型的对象。

    2.multimap

    • 大多都跟map一样
    • 元素可以重复

    3.set

    • map是键值对,set是值的集合,只有值
    • set_union(A.begin() , A.end() , B.begin() , B.end() ,输出迭代器 )  ——  联合A和B后传给最后一个参数
    • set_intersection() —— 查找交集
    • set_difference() —— 获得两个集合的差
    • lower_bound() —— 键为参数,返回一个指向集合中第一个小于键参数的成员
    • upper_bound() —— 键为参数,返回一个指向集合中第一个大于键参数的成员

    4.multiset

    • 大多都跟set一样
    • 元素可以重复

    无序关联容器

    unordered_map与unordered_set、unordered_multimap、unordered_multiset都是无序的关联容器

  • 相关阅读:
    Qt5.12.2添加mqtt模块
    springboot+vue+elementUI 高校学生实习管理管理系统 #毕业设计
    Postman —— postman实现参数化
    Nginx优化与防盗链
    抖音店铺提供优质服务|成都瀚网科技
    C++16 --- C++相关试题及相关知识点整理
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java抗包虫病药物查询与推荐系统rx40p
    RePaint: Inpainting using Denoising Diffusion Probabilistic Models 论文解读和感想
    计算机复试面试题总结
    JavaScript -- 字符串常用方法及示例代码介绍
  • 原文地址:https://blog.csdn.net/weever7/article/details/127668107
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号