STL容器_003_deque
  uhAcWl7Ne2Li 2023年11月02日 70 0
C++

deque

是什么

循环队列, 支持头尾删插
结构:
image
有一个控制中心(node), 相当于组委会. 它们控制不同的buffer
buffer的增长也是两倍增长

每个iterator++ --的时候都要判断是否到了边界
iterator 是可以跳的类型

为什么

怎么样

自己没有 .sort()

适配器改造

适配器改造->stack

栈, FILO先进后出
image

怎么用

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先进先出
image

怎么用

初始化

//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);
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   80   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   58   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   44   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   58   0   0 C++
uhAcWl7Ne2Li
作者其他文章 更多