C++ STL容器之deque双端队列

STL双端队列deque

deque 没有容量的观念。它是动态以分段连续空间组合而成,一旦有必要在 deque 的前端和尾端增加新空间,串接在整个deque 的头端或尾端, deque 的迭代器不是普通的指针,其复杂度比 vector 复杂的多。除非必要,我们应该尽量选择使用vector 而非 deque

STL双端队列特点:

deque 是一种双向开口的连续性空间,可以在头尾两端分别做元素的插入和删除操作。

deque模型图

使用STL deque需要:

#include deque >

using namespace std;

deque定义:

deque(size_type Count)        //构建了指定长度的deque,并且有默认的初始值0
deque(size_type _Count,const Type& Val)//构建了指定长度的deque,手动指定初始值

deque<int> q;                

deque<int> q2(10);        //构建了指定长度的deque,并且有默认的初始值0
deque<int> q3(10,5);        //构建了指定长度的deque,手动指定初始值

deque<int>  q4{1,2,3,4}; //使用初始化列表构建deque

deque的一些常用函数: 


push_back()

尾添加


push_front()

头添加


pop_back()

尾删除


pop_front()

头删除


begin()

返回队列头元素的迭代器。


end()

返回队列尾元素的一下无效元素的迭代器。

deque<int> q;
q.push_back(1);
q.push_back(2);
q.push_back(3);
q.push_back(4);
q.push_front(0);
cout << *(q.end()-1) << endl;//4
cout << *(q.begin()) << endl;//0


back()

返回尾元素中的值。


front()

返回头元素中的值。


erase()

删除指定迭代器位置的节点,返回的是删除节点的下一个节点的迭代器。

//q   0 1 2 3 4

deque<int>::iterator ite = q.begin();
ite = q.erase(++ite);
cout << *ite << endl;//2 删除返回的是删除节点的下一个


insert()

指定迭代器位置之前插入一个元素,返回的是插入的元素的迭代器。

    int a = 5;
    ite = q.insert(ite, a);
    cout << *ite << endl;//5
    ite = q.begin();
    while (ite != q.end()) {
        cout << *ite << " ";//0 5 2 3 4
        ite++;
    }
    cout << endl;


size()

返回队列元素数量。


empty()

是否为空。


clear()

清空队列


支持[]下标访问。

  • 25
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值