STL容器

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容