STL容器_003_deque
deque
是什么
循环队列, 支持头尾删插
结构:
有一个控制中心(node), 相当于组委会. 它们控制不同的buffer
buffer的增长也是两倍增长
每个iterator++ --的时候都要判断是否到了边界
iterator 是可以跳的类型
为什么
怎么样
自己没有 .sort()
适配器改造->stack
栈, FILO先进后出
怎么用
stack<char>st;
//操作
//添加元素 initialized to a copy of val.
st.push('h');
//在栈顶构造并插入新元素 (直接原地构造, 不用复制, 可能会快一些)
st.emplace("i");
//弹出栈顶的元素
st.pop();
//初始化
stack<char>st1(st);//拷贝构造
stack<char>st2;
st2 = st1;//运算符重载
//查看状态类
//返回bool类型,如果为空,返回1,否则返回0
st.empty();
//返回栈顶的元素
st.top();
//返回栈中的元素个数
st.size();
//把两个交换一下swap() st中的元素放到st1中, st1中的元素放在st中
st.swap(st1);
//非成员函数重载
swap(st,st1);
适配器改造->queue
循环队列, FIFO先进先出
怎么用
初始化
//C11
deque<int> deq{1,2,3,4,5};
//拷贝构造,可以拷贝deque
queue<int> que(deq);
//100个5
queue<int> que2(100,5);
//运算符重载
que2 = que;
操作
//队尾添加元素 (这里只有一个出入口, 就无所谓前后了 也不用什么push_back())
que.push(1);
//弹出队首的元素
que.pop();
//在队尾构造并插入新元素
que.emplace("2");
查看状态类
- ps: stack 和 queue 都是 deque 的特殊情况, 他们不提供迭代器操作, 自然地, 不支持[]访问
//返回bool类型,如果为空,返回1,否则返回0
que.empty();
//返回队首元素的引用
que.front();
//返回队尾元素的引用
que.back();
//大小
que.size();
//把两个队列的内容交换一下 自己有swap就用自己的
que.swap(que2);
非成员函数重载
//交换内容
swap(que,que2);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!