zoukankan      html  css  js  c++  java
  • 转载:STL常用容器的底层数据结构实现

    转载至:https://blog.csdn.net/qq_28584889/article/details/88763090

    vector :底层数据结构为数组,支持快速随机访问

    list:底层数据结构为双向链表,支持快速增删

    deque:底层数据结构为一个中央控制器和多个缓冲区,支持首尾快速增删,也支持随机访问   

    deque是一个双端队列(double-ended queue),也是在堆中保存内容的,它的保存形式如下:
    [堆1]-->[堆2]-->[堆3]-->...
    每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品

    stack:底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时

    queue:底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时

    (stack和queue其实是适配器,而不叫容器,因为是对容器的再封装)

    priority_queue:底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现。(所有容器中就priority_queue使用greater<int>()表示第一个元素最小的,小根堆)

    set:底层数据结构为红黑树,有序,不可重复

    multiset:底层数据结构为红黑树,有序,可重复

    map:底层数据结构为红黑树,有序,不可重复

    multimap:底层数据结构红黑树,有序,可重复

    unorder_set:底层数据结构hash表,无序,不重复

    unorder_multiset:底层数据结构为hash表,无序,可重复

    unorder_map:底层数据结构为hash表,无序,不可重复

    unorder_multimap:底层数据结构为hash表,无序,可重复

  • 相关阅读:
    CCF计算机职业资格认证考试 201809-2 买菜
    【CodeVS3013】单词背诵
    【CodeVS3304】水果姐逛水果街Ⅰ
    【CodeVS4246】奶牛的身高
    【hdu1247】Hat’s Words
    【CodeVS4189】字典
    【CodeVS4244】平衡树练习
    【poj3264】Balanced Lineup
    【树状数组】
    【CodeVS1163】访问艺术馆
  • 原文地址:https://www.cnblogs.com/yichengming/p/11175421.html
Copyright © 2011-2022 走看看