list、vector、deque、set、map等各容器的底层

STL里常用的几种容器及特点:
list:底层是双向链表,在当前结点前后插入新元素的效率为O(1),当然如果需要有序插入的话,还是会退化为O(n),因为需要遍历比较元素值
vector:底层是动态数组,把数组的常用操作封装起来,方便使用,插入性能为O(n),尾插为O(1);
deque:主要是和 vector 相比较,从头部插入的性能优于 vector;
set:底层是红黑树,直接存储用户的数据,要求存储的数据是可以比较的,插入性能是log(n),树的平衡调整规则会有一定的开销;
map:底层是红黑树,存储的数据类型是 pair(键值对),和 set 相比,map 对存储的用户数据的要求没那么高,而把要求转移到键上;
pair:通常是 map 的存储数据类型,只能存储两个值。pair,为map而生(锅牛,为梦想而生,不知道是哪里的广告了);
priority_queue:底层是个堆结构(大小顶堆),优先队列是队列结构和有序存储的结合,保证队首元素是当前的极值;

猜你喜欢

转载自blog.csdn.net/qq_43360777/article/details/106326195
今日推荐