C++容器适配器
容器适配器是用基本容器实现的一些新容器,这些容器可以用于描述更高级的数据结构。
容器适配器有三种:stack、queue 和 priority_queue:
- stack 可以与数据结构中的栈对应,它具有先进后出的特性;
- queue则可以理解为队列,它具有先进先出的特性;
- priority_queue 则是带优先级的队列,其元素可以按照某种优先级顺序进行删除。
c++ 栈(后进先出)
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack< int > s;
int a;
for (int i=0;i<10;i++)
s.push(i*1);
while( !s.empty() )
{
a = s.top();
s.pop();
cout<< a <<endl;
}
return 0;
}
我们在主函数中定义了一个 stack 容器实体 s,用一个 while 循环向容器 s 中添加数据,再利用一个 while 循环将元素都出栈并打印显示。
对于 stack,push() 为入栈操作即向栈中添加元素,pop() 为出栈操作即删除栈顶元素,top() 函数则为返回栈顶元素但是并不删除它,empty() 函数则用于判断栈是否为空,若为空则返回 true,否则返回 false。
默认情况下,stack 容器衍生自 deque,当我们定义一个 stack 容器实例时:
tack < int > s;
它其实等价于:
stack < int, deque<int> > s;
c++ 队列 先进先出
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue < int > q;
int a;
for (int i=0;i<10;i++)
q.push(i*i);
while( !q.empty() )
{
a = q.front();
q.pop();
cout<< a <<endl;
}
return 0;
}
本例是 queue 容器的一个示例程序。对于 queue 容器而言,它同样默认是衍生自 deque 容器的。
与 stack 容器相同,queue 同样有 push()、pop() 函数用于插入和删除元素。不同之处在于,stack 只能操作栈顶,而 queue 是在队列尾部插入元素,在队列头部删除元素。stack 容器用 top() 函数访问栈顶元素,而 queue 没有栈顶这么一说,因而也就没有 top() 函数了,我们想访问队列头的元素可以使用 front() 函数,该函数只是访问并不删除元素。empty() 函数同样可以用于判断队列 queue 是否为空。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本