queue双端队列容器

目录

 

1.创建deque对象

2.插入元素

3.前向遍历

(1)以数组方式遍历

(2)以前向迭代器的方式遍历

4.反向遍历

5.删除元素

6.访问元素

 7.其他


1.创建deque对象

头文件:#include<deque>

deque<int> d;   //创建没有任何元素的deque对象
deque<float> dd;

deque<int> d(10); //创建具有10个整型元素的deque对象d

deque<int> d(10,8.5); //创建具有10个整型的deque对象d,每个元素的值都是8.5

2.插入元素

push_back(i); //从尾部插入元素i,会不断扩张队列
push_front(i); //从头部插入元素i,只将原有的元素覆盖
insert(d.begin()+1,88); //将d[1]位置赋值为88

3.前向遍历

(1)以数组方式遍历

#include<deque>
#include<iostream>
using namespace std;
int main(){
    deque<int> d;

    //从尾部连续插入三个元素1 2 3
    for(int i=1;i<4;i++){
        d.push_back(i);
    }

    for(int i=0;i<d.size();i++)
        cout<<d[i]<<" ";
    cout<<endl;
    //输出结果:1 2 3 
    
    return 0;
}

(2)以前向迭代器的方式遍历

#include<deque>
#include<iostream>
using namespace std;
int main(){
    deque<int> d;

    //从尾部连续插入三个元素1 2 3
    for(int i=1;i<4;i++){
        d.push_back(i);
    }

    deque<int>::iterator it;
    for(it=d.begin();it!=d.end();it++)
        cout<<*it<<" ";
    cout<<endl;
    //输出结果:1 2 3

    return 0;
}

4.反向遍历

#include<deque>
#include<iostream>
using namespace std;
int main(){
    deque<int> d;

    //从尾部连续插入三个元素1 2 3
    for(int i=1;i<4;i++){
        d.push_back(i);
    }

    //以反向迭代器的方式遍历
    deque<int>::reverse_iterator rit;
    for(rit=d.rbegin();rit!=d.rend();rit++)
        cout<<*rit<<" ";
    cout<<endl;
    //输出结果:3 2 1

    return 0;
}

5.删除元素

可以从双端队列的头部、尾部、中部删除元素,并可以清空双端队列容器。

pop_front(); //从头部删除元素
pop_back();  //从尾部删除元素
erase(d.begin()+1); //从中间删除元素,其参数是迭代器位置

clear() 可以清空双端队列容器

#include<deque>
#include<iostream>
using namespace std;
int main(){
    deque<int> d;

    //从尾部连续插入三个元素1 2 3
    for(int i=1;i<4;i++){
        d.push_back(i);
    }

    deque<int>::iterator it;
    for(it=d.begin();it!=d.end();it++)
        cout<<*it<<" ";
    cout<<endl;
    //输出结果:1 2 3

    d.clear();
    cout<<d.size()<<endl;
    //输出结果:0
    return 0;
}

6.访问元素

d.front();  //返回第一个数据
d.back(); //返回最后一个数据
d.begin();  //返回指向第一个数据的迭代器
d.end();  //返回指向最后一个数据下一个位置的迭代器
d.rbegin(); //返回指向反向队列的第一个元素的迭代器(即原队列的最后一个元素)
d.rend(); //返回指向反向队列的最后一个元素的下一个位置(即原队列的第一个元素的前一个位置)

 7.其他

更详细的请参见这位博友的 STL系列之一 deque双向队列

猜你喜欢

转载自blog.csdn.net/qq_37275680/article/details/81588630
今日推荐