当前位置:
首页 >
C++ 双端队列(deque)的使用
发布时间:2023/11/27
48
豆豆
生活随笔
收集整理的这篇文章主要介绍了
C++ 双端队列(deque)的使用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
双端队列(deque)是什么
双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除的功能,deque类似于vector,
双端队列(deque)属于STL(Standard Template Library, 标准模板库)所以使用的也是也是需要先引入: #include <deque>
双端队列(deque)的初始化
#include <iostream>
#include <string>
using namespace std;
#include <deque>int main()
{// 创建一个空的双端队列deque<int> a;cout << a.size() << endl;// 创建一个10个元素对象deque<int> b(10);// 创建5个元素且5个元素都为明天cout << b.size() << endl;deque<string> c(5, "明天");for (int i = 0; i < b.size(); i++){cout << c[i] << endl;}return 0;
}
双端队列(deque)与向量(vector)比较
双端队列(deque)与向量(vector)多了可在两端进行push、pop但是缺点是占用内存多
(1)如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
(2)如果你需要大量的插入和删除,而不关心随机存取,则应使用list
(3)如果你需要随机存取,而且关心两端数据的插入和删除,则应使用deque
双端队列(deque)方法说明
| 函数 | 说明 |
| assign(first,last) | 用迭代器first和last所在元素替换双端队列元素 |
| assign(num,val) | 用val的num个副本替换双端队列元素 |
| at(n) | 返回双端队列中第n个位置元素的值 |
| begin | 双端队列中第一个元素的引用 |
| back | 双端队列中最后一个元素的引用 |
| size | 返回双端队列的个数 |
| front | 获取双端队列中第一个元素 |
| end | 获取双端队列中最后一个元素 |
| empty | 判断双端队列是否为空,为空返回true |
| clear | 清空双端队列元素 |
| pop_back | 删除双端队列中最后一个元素 |
| pop_front | 删除双端队列中第一个元素 |
| rbegin | 返回一个反向迭代器,指向双端队列末尾元素之后 |
| rend | 返回一个反向迭代器,指向双端队列起始元素 |
| erase(i) | 删除第i位置的元素(注意不能直接为数组,需要用begin或者end) |
| erase(start,end) | 删除指定的元素返回,注意是前包含后不包含,里面不能是数字 |
| insert(i,x) | 把 i 插入到x位置 |
| insert(i,x,y) | 把 i 插入到x到y 的位置 |
| swap | 与另一个vector交换数据 |
demo 练习
#include <iostream>
#include <string>
using namespace std;
#include <deque>int main()
{// 声明一个string 类型的dequedeque<string> ve;// 获取默认deque的sizecout << ve.size() << endl;//在末尾位置添加元素ve.push_back("赵");ve.push_back("钱");ve.push_back("孙");ve.push_back("李");// 获取deque的sizecout << ve.size() << endl;// 开始的位置插入元素ve.insert(ve.begin(),"百家姓:");// 结束的位置插入元素ve.insert(ve.end(),"ok");//删除指定的元素返回,注意是前包含后不包含,里面不能是数字,// ve.erase(ve.begin(),ve.begin()+2);// 删除第二个deque元素ve.erase(ve.begin()+1);//删除最后一个元素ve.pop_back();// for遍历deque的元素for (int i = 0; i < ve.size(); i++){cout << ve[i] << endl; }//使用迭代器遍历元素for(deque<string>::iterator it=ve.begin();it!=ve.end();it++){cout<<*it<<endl;}// 获取deque第一个元素cout << ve.front() << endl;// 获取deque最后一个元素cout << ve.back() << endl;//获取第3个位置的元素cout << ve.at(2) << endl;// deque判空if (ve.empty()){cout << "ve为空" << endl;}else{cout << "ve不为空" << endl;}// 清空dequeve.clear();return 0;
}
总结
以上是生活随笔为你收集整理的C++ 双端队列(deque)的使用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 求一个qq女生12字网名!
- 下一篇: git remote 命令