STL容器

作者: 扎Zn了老Fe | 来源:发表于2017-09-13 14:36 被阅读0次

    vector

    • 概述: 连续数组, malloc开辟内存空间
    • 迭代器: 是一个对象指针
    • 内存管理:
      当添加新元素时, 内存不够触发内存重置操作, g++ 1.5倍, vs 2倍;
      删除元素时, 不会自动缩小空间;

    list

    • 概述: 双向链表
    • 迭代器:
    • 内存管理:

    deque

    • 概述: 分段连续, 用一个map管理
    • 迭代器: 管理段内first, last, cur指针, 已经指向map
    • 内存管理:
      在头部或者尾部最后会有一个备用空间, 添加元素没有备用空间时触发开辟新段;
      删除时, 元素会移动,段内没有元素时会释放掉内存空间;

    set

    • 概述: 底层是RB树
    • 迭代器: 调用RB树的const迭代器
    • 内存管理: 与list类似

    muitiset

    • 概述:与set相同, 唯一的差别在于它语序键值重复, 因此他的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique();
    • 迭代器:
    • 内存管理:

    hash_set

    • 概述:
    • 迭代器:
    • 内存管理:

    hash_multiset

    • 概述:
    • 迭代器:
    • 内存管理:

    map

    • 概述: 节点存放pair的RB树
    • 迭代器: 调用RB树的迭代器
    • 内存管理:

    multimap

    • 概述:与set相同, 唯一的差别在于它语序键值重复, 因此他的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique();
    • 迭代器:
    • 内存管理:

    hash_map

    • 概述:
    • 迭代器:
    • 内存管理:

    hash_multimap

    • 概述:
    • 迭代器:
    • 内存管理:

    相关文章

      网友评论

          本文标题:STL容器

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