欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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)的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。