美文网首页
第八周 C++标准库 体系结构与内核分析 Boolan 侯捷

第八周 C++标准库 体系结构与内核分析 Boolan 侯捷

作者: 一般的路人丙 | 来源:发表于2017-03-16 22:24 被阅读0次

    生病卧床中……OTL

    deque&queue 和 stack 深度探索上

    容器 deque

    容器 deque

    分段串接

    deque的iterator

    deque的iterator

    map 实际是一个 vector,里面是指针
    iterator 里面四部分 cur、first、last、node
    first 和 last 是每一段里的首尾

    deque<T>::insert()

    deque<T>::insert()

    deque 如何模拟连续空间

    模拟连续空间

    容器 queue

    容器 queue

    容器 Stack

    容器 Stack

    queue和stack,关于其iterator和底层结构

    queue和stack,关于其iterator和底层结构
    • queue和stack都可以选择list或deque作为底层结构。
    • queue不能选择vector作为底层结构,而stack可以。
    • queue和stack都不能选择set或map作为底层结构

    容器 rb_tree

    Red-Black tree(红黑树)是平衡二元搜索树(balanced binary search tree)中常被使用的一种。平衡二元搜索树的特征是:排列规则有利search和insert,并保持平衡——无任何节点过深。
    rb_tree提供“遍历”操作及iterators。按正常规则(++ite)遍历,便能获得排序状态(sorted)。
    我们不应使用rb_tree的iterators改变元素值(因为元素有其严谨排列规则)。编程层面(programming level)并未阻绝此事。如此设计是正确的,因为rb_tree即将为set和map服务(作为其底部支持),而map允许元素的data被改变,只有元素的key才是不可被改变的。
    rb_tree提供两种insertion操作:insert_unique()insert_equal()。前者表示节点的key一定在整个tree中独一无二,否则插入失败;后者表示节点的key可以重复。

    容器 rb_tree

    容器 _Rb_tree

    容器 _Rb_tree

    handle and body
    手法和本体分开

    容器set,multiset

    容器set,multiset 容器set

    set的所有操作,都转呼叫底层t的操作。从这层意义看,set未尝不是个container adapter。

    容器map,multimap

    容器map,multimap 容器map

    容器map,独特的operator[]

    容器map,独特的operator[]

    容器 hashtable

    容器 hashtable

    Separate Chaining
    分开-串联
    链表太长要打散,bucket篮子过长
    元素个数比篮子个数还多,就要打散
    打散的方式就是把篮子增加两倍

    iterator

    hash_function,hash-code

    hashcode值要够乱才好
    一开始就可以设置篮子大小

    unordered 容器

    unordered容器

    相关文章

      网友评论

          本文标题:第八周 C++标准库 体系结构与内核分析 Boolan 侯捷

          本文链接:https://www.haomeiwen.com/subject/kdqogttx.html