C++ STL 中的 DEQUE 容器

原文:https://www.studytonight.com/cpp/stl/stl-container-deque

Deque 是双端队列的简写。Deque 允许在队列的两端快速插入和删除。虽然我们也可以在向量容器的两端使用向量容器进行插入和删除,但是在数组的前面插入和删除比在后面更昂贵,在 deque 的情况下但是 deque 内部更复杂。

创建德格的语法是:

**deque**< object_type > *deque_name*;

德清的成员职能

下面是一些在 STL 中常用的 Deque 容器函数:

push_backpush_frontinsert功能

push_back(element e)在德格后面插入元素 epush_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_backpop_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  */*
}

emptysizemax_size功能

empty()如果 deque 为空,则返回布尔值 true,否则返回布尔值 false。size()返回德格中存在的元质数量,max_size()返回给定德格可以容纳的元质数量。

swap功能

这个方法可以用来交换两个 deq 的元素。