STL——顺序容器、配置

STL

STL 标准模板库 是 “容器”和“算法”的集合。
1、组成部分:容器、迭代器、空间配置器、配接器、算法、仿函数。

2、对常用的容器以及容器适配器总结如下表:
在这里插入图片描述

一、容器分类

  • 顺序容器:
    向量vector
    列表list
    双队列deque

  • 容器适配器(特殊的容器):
    栈stack
    队列queue
    优先队列priority_queue

  • 关联容器:
    映射map
    多重映射multimap
    集合set
    多重集合multiset

二、顺序容器分析总结

在这里插入图片描述
另外,对于扩容的两个函数我进行了如下分析总结:

vector<int> vec;
int new_size = 10;
vec.resize(new_size);
//1、new_size < vec.size() :调用erase(begin() + _Newsize, end())删除多余元素
//2、new_size > vec.size() :保留原来元素,并将空余元素初始化为0

vec.reserve(new_size);
//1、new_size < vec.size() :保留原来元素,不进行操作
//2、new_size > vec.size() :调用_Reallocate仅开辟空间

三、容器适配器

容器适配器,实质上是对容器的再封装,通过定义新的操作接口,来适应基础的容器类型。
1、底层数据结构以及原因分析

  • stack(push/pop/empty/size/top)
    底层数据结构:deque
    原因:
    LIFO的特点,将deque头部端口封闭即可构成stack;
    deque内存动态开辟性能高。

  • queue(push/pop/empty/size/front/back)
    底层数据结构:deque
    原因:
    FIFO的特点,将deque头部入口和尾部出口封闭即可构成queue;
    deque内存动态开辟性能高。

  • priority_queue(push/pop/empty/size/top)
    底层数据结构:vector
    原因:
    默认大根堆,只根结点有序,即top()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值