STL学习笔记5 —— Container Adaptor

本文介绍了C++ STL中的三种容器适配器:stack、queue和priority_queue。详细讲解了它们的特点、使用方法及成员函数,并提供了示例代码。

一、容器适配器

接下来介绍 3 种容器适配器,分别是 stackqueuepriority_queue

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

简单的理解容器适配器:将不适用的序列式容器(包括 vector、deque 和 list)变得适用

功能如下:

container addaptor characteristic functions
stack LIFO push()、pop()、top()
queue FIFO push()、pop()、front()、back()
priority_queue first item is the greatest priority push()、pop()、top()

三类容器适配器均无迭代器,因此访问元素的唯一方式是遍历容器,通过不断移除访问过的元素,去访问下一个元素


二、stack容器

1. stack的特点与使用

在这里插入图片描述

栈中存储的元素满足“后进先出(简称LIFO)”的准则,stack 适配器也同样遵循这一准则。

由于 stack 适配器以模板类 stack<T,Container=deque<T>>(其中 T 为存储元素的类型,Container 表示底层容器的类型)的形式位于头文件中,并定义在 std 命名空间里。第二个参数默认为 deque,可以指定第二个参数的类型,只要该容器支持 empty()、size()、back()、push_back()、pop_back() 这 5 个成员函数即可,如:vectordequelist

std::stack<std::string, std::list<int>> values;
2. stack的成员函数
函数 功能
size() 返回元素个数
empty() 若stack为空则返回true
top() 返回栈顶元素的引用&,栈空则报错
push(const T& val) 将val压栈,利用了push_back()来实现
pop() 弹栈操作

举例:

#include <iostream>
#include <stack>
#include <list> 
using namespace std;

int main()
{
   
   
	stack<int> s;
	stack<int, std::list<int>> s1;
	s.push(2);
	s.push(5);
	s.push
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值