STL容器适配器概述

参考链接
容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。

stack<T>:是一个封装了 deque<T> 容器的适配器类模板,默认实现的是一个后入先出(Last-In-First-Out,LIFO)的压入栈。stack<T>模板定义在头文件 stack 中。
queue<T>:是一个封装了 deque<T>容器的适配器类模板,默认实现的是一个先入先出(First-In-First-Out,LIFO)的队列。可以为它指定一个符合确定条件的基础容器。queue<T>模板定义在头文件 queue 中。
priority_queue<T>:是一个封装了 vector<T>容器的适配器类模板,默认实现的是一个会对元素排序,从而保证最大元素总在队列最前面的队列。priority_queue<T>模板定义在头文件 queue 中。

简单的理解容器适配器,其就是将不适用的序列式容器(包括 vector、deque 和 list)变得适用。
即通过封装某个序列式容器,并重新组合该容器中包含的成员函数,使其满足某些特定场景的需要。

容器适配器本质上还是容器,只不过此容器模板类的实现,利用了大量其它基础容器模板类中已经写好的成员函数。当然,如果必要的话,容器适配器中也可以自创新的成员函数。

STL 提供了 3 种容器适配器,分别为 stack 栈适配器、queue 队列适配器以及 priority_queue 优先权队列适配器。

容器适配器基础容器筛选条件默认使用的基础容器
stack基础容器需包含以下成员函数:empty()、size()、back()、push_back()、pop_back()。满足条件的基础容器有 vector、deque、list。deque
queue基础容器需包含以下成员函数:empty()、size()、front()、back()、push_back()、pop_front()。满足条件的基础容器有 deque、list。deque
priority_queue基础容器需包含以下成员函数:empty()、size()、front()、push_back()、pop_back()。满足条件的基础容器有vector、deque。vector

由于不同的序列式容器其底层采用的数据结构不同,因此容器适配器的执行效率也不尽相同。但通常情况下,使用默认的基础容器即可。当然,我们也可以手动修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值