• STL关联式容器以set(集合) 和 map(映射表)两大类,以及对应的衍生体构成,比如mulyiset(多键集合) multimap(多键映射表) ,容器的底层均基于红黑树
  • RB-Tree也是一个独立的容器,但是不对外开放
  • 此外还提供了标准之外的关联式容器 hash table散列表,以及基于hash table完成的hash_set 散列集合、hash_map散列映射表、hash_multiset散列多键集合、hash_multimap散列多键映射表

关联式容器

  • 类似关联式数据库,每一笔数据均由键值和实值两部分组成,当元素被插入到关联式数据库的时候,容器的内部结构不管是RB-tree还是hash_table便依照键值的大小使用某种特定的规则将这个元素放置在适当的位置
  • 关联式容器 没有所谓的头尾的概念(比如极值出现在头或者尾)、push_back()  push_front() pop_back() pop_front() begin() end() 均不具备
  • 关联式容器的内部是一个 balance binary tree 平衡二叉树,主要目的是为了获得良好的搜索的效率。但是  balance binary tree 平衡二叉树包含很多的类型,比如AVL tree、rb-tree 、AA-tree 但是使用最为广泛的是RB-Tree红黑树
  • set的键值就是实值,而map的键值和实值是可以分开的,形成一种映射的关系。所以map也称之为映射表,或者称之为字典。

STL源码剖析 关联式容器相关推荐

  1. STL源码剖析 关联式容器 树 红黑树、二叉搜索树、平衡二叉搜索树

    所谓关联式容器,观念上类似关联式数据库(实际上则简单许多):每笔数据(每个元素)都有一个键值(key)和一个实值(value) 2.当元素被插入到关联式 容器中时,容器内部结构(可能是RB-tree, ...

  2. STL源码剖析 关联式容器 红黑树

    概念 红黑树不仅仅是一个二叉树,必须满足如下条件 1,每个节点不是红色就是黑色 (深色底纹为黑色,浅色底纹为红色) 2,根节点是黑色的 3,如果节点为红,其子节点必须为黑色的 4,任一节点至NULL( ...

  3. STL源码剖析 序列式容器|Vector

    容器的概观和分类 array 数组 .list 链表.tree树 .stack堆栈.queue队列.hash table散列表.set集合.map映射表 根据数据在容器中的排列顺序,将上述数据结构分为 ...

  4. STL源码剖析 序列式容器 slist

    STL l i s t 是个双向链表(double linked lis t) .SGI STL提供了一个单向链 表 (single linked lis t) , 名 为 slist s l i s ...

  5. STL源码剖析 序列式容器 deque双端队列

    相较于vector的内存拷贝,deque在内存不足时只需要进行内存的拼接操作即可,不需要重新配置.复制.释放等操作,代价就是迭代器的架构不是一个普通的指针,比较复杂 d e q u e 的迭代器 de ...

  6. STL源码剖析 序列式容器 vector 和 ilist

       Vector                 list             单向链表 ilist list的删除操作,也只有指向被删除元素的迭代器会失效,其他迭代器不会受到影响

  7. STL源码剖析(十三)关联式容器之rb_tree

    STL源码剖析(十三)关联式容器之rb_tree 文章目录 STL源码剖析(十三)关联式容器之rb_tree 一.rb_tree的数据结构 二.rb_tree的迭代器 三.rb_tree的操作 3.1 ...

  8. STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器

    Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...

  9. C++ STL源码剖析 笔记

    写在前面 记录一下<C++ STL源码剖析>中的要点. 一.STL六大组件 容器(container): 各种数据结构,用于存放数据: class template 类泛型: 如vecto ...

最新文章

  1. python怎么用excel-python怎么连接excel
  2. Redis进阶-Stream多播的可持久化的消息队列
  3. WireShark过滤器选项
  4. python 中使用celery
  5. 二叉树最大路径和 python_[面试题]二叉树中最大路径和
  6. java 异常机制_深入理解Java异常处理机制
  7. 【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
  8. 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统(附源码+视频教程(第6节))...
  9. CentOS6离线升级CentOS7
  10. 页面仔 很丢人么?前端越来越不好干了
  11. Java高并发编程详解系列-线程通信
  12. Flutter进阶—平台插件
  13. VC6.0下配置opengl
  14. 卡方检验的统计量推导_卡方检验的卡方检验法的基本原理和步骤
  15. 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第3章 应用开发
  16. 搜索计算机硬盘的索引恢复,如何修复Windows 10搜索索引 | MOS86
  17. 一个老程序员的计算机视觉蹒跚学习之路
  18. AiHi+翼次元学院儿童自然感知实践“几米小甜田”+中韧开智“优慧码”| Wit++
  19. html5卡片平行视差效果,HTML5/jQuery很棒的交互式平行视差皓月当空场景动画
  20. imprecise external abort

热门文章

  1. html图片轮播怎么做的,CSS3制作轮播图的一种方法
  2. 渗透技巧——利用netsh抓取连接文件服务器的NTLMv2 Hash
  3. dos如何修改远程服务器的密码,dos命令登入远程服务器
  4. 数据结构 - 链表(双向链表学习)
  5. Selenium 显式等待条件及其含义
  6. REST风格笔记【简介篇】
  7. 南京大学计算机考研分数线2021,南京大学2021年硕士研究生复试基本分数线
  8. linux 性能测试iostat,Linux性能分析之二(iostat)
  9. 【牛客 - 551D】CSL 的字符串(单调栈,思维)
  10. 【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)