STL容器实现原理

2018/03/18 C 共 305 字,约 1 分钟

STL共有六大组件:容器、算法、迭代器、仿函数、适配器、空间适配器

时间复杂度

vector: 内部数组时间,三个迭代器,每次扩容扩大到原来的两倍,需要复制全部数据,连续空间,随机访问

  • insert() O(N) //插入元素,O(n)的复杂度
  • erase() O(N) //删除某个元素,O(n)的复杂度

list: 双向链表

  • 访问插入删除O(1)
  • 排序O(nlogn)

deque: 双向队列,分段连续数组

  • insert(),erase() O(N)
  • 头部插入, O(1)

set: 红黑树

  • 查找插入删除都是O(logn);

map: 红黑树

  • 查找插入删除都是O(logn);

priority: 堆实现

  • push() O(n)
  • pop() O(n)
  • top() O(1)

Search

    Table of Contents