C++ STL 中的 DEQUE 容器
Deque 是双端队列的简写。Deque 允许在队列的两端快速插入和删除。虽然我们也可以在向量容器的两端使用向量容器进行插入和删除,但是在数组的前面插入和删除比在后面更昂贵,在 deque 的情况下但是 deque 内部更复杂。
创建德格的语法是:
**deque**< object_type > *deque_name*;
德清的成员职能
下面是一些在 STL 中常用的 Deque 容器函数:
push_back
、push_front
和insert
功能
push_back(element e)
在德格后面插入元素 e ,push_front(element e)
在德格前面插入元素 e 。
insert()
方法有三种变体:
insert(iterator i, element e)
:在德格中迭代器 i 指向的位置插入元素 e 。insert(iterator i, int count, element e)
:插入元素 e ,从迭代器 i 指向的位置开始计算的次数。insert(iterator i, iterator first, iterator last)
:将范围[第一个,最后一个]中的元素插入到迭代器 i 所指向的位置。
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int main ()
{
int a[] = { 1,5,8,9,3 };
**deque**<int> dq(a, a+5);
*/* creates s deque with elements 1,5,8,9,3 */*
dq.**push_back**(10);
*/* now dq is : 1,5,8,9,3,10 */*
dq.**push_front**(20);
*/* now dq is : 20,1,5,8,9,3,10 */*
**deque**<int>::iterator i;
i=dq.**begin**()+2;
*/* i points to 3rd element in dq */*
dq.**insert**(i,15);
*/* now dq 20,1,15,5,8,9,3,10 */*
int a[]={7,7,7,7};
d1.**insert**(dq.**begin**() , a , a+4 );
*/* now dq is 7,7,7,7,20,1,15,5,8,9,3,10 */*
}
pop_back
和pop_front
功能
pop_back()
从德格的后面移除一个元素,而pop_front
从德格的前面移除一个元素,两者都将德格的大小减少一。
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int main ()
{
int a[] = { 1,5,8,9,3,5,6,4 };
**deque**<int> dq(a,a+8);
*/* creates s deque with elements 1,5,8,9,3,5,6,4 */*
dq.**pop_back**();
*/* removes an element from the back */*
*/* now the deque dq is : 1,5,8,9,3,5,6 */*
dq.**pop_front**();
*/* now dq is : 1,5,8,9,3,5,6 */*
}
empty
、size
和max_size
功能
empty()
如果 deque 为空,则返回布尔值 true,否则返回布尔值 false。size()
返回德格中存在的元质数量,max_size()
返回给定德格可以容纳的元质数量。
swap
功能
这个方法可以用来交换两个 deq 的元素。