deque双端队列容器

   Deque与Vector很相似,不及可以在尾部插入和删除元素,还可以在头部插入和删除,时间复杂度为O(1),考虑到元素的内存分配策略和操作性能时,Deque比Vector有优势。

  由于使用了Map管理和以块为单位进行分配,所以不易实现Capacity和Reverse函数,而且也不需要这种函数。

#include<iostream>
#include<deque>
#include<cstdio>

using namespace std;

int main()
{
    deque<string>d;

    d.push_back("1a");
    d.push_back("2");
    d.push_back("3");
    d.push_front("front");                  //高效的头部插入元素
    //d.pop_front();                        //删除首元素
    //d.pop_back();                         //删除尾元素
    //d.erase(d.begin() + 1);               //删除指定位置元素
    //d.clear();                            //删除所有元素
    d.insert(d.end() - 2, "insert");        //指定位置插入

    for(int i = 0; i < d.size(); i++)       //数组方式访问
        cout<<d[i]<<" ";
    cout<<endl;


    deque<string>::iterator i;              //迭代器访问

    for(i = d.begin(); i != d.end(); i++)
        cout<<*i<<" ";
    cout<<endl;

    swap(d[1], d[2]);                       //两元素交换,可交换两个Queue的所有元素
    deque<string>::reverse_iterator pi;     //反向遍历

    for(pi = d.rbegin(); pi != d.rend(); pi++)
        cout<<*pi<<" ";
    cout<<endl;

    cout<<"Deque是否有元素"<<d.empty()<<endl;
    cout<<"Deque元素个数为"<<d.size()<<endl;
    cout<<"Deque的首元素为"<<d.front()<<endl;
    cout<<"Deque的尾元素为"<<d.back()<<endl;
    cout<<"Deque的最大容量为"<<d.max_size()<<endl;
    getchar();

    return 0;
}

运行结果:

永远渴望,大智若愚(stay hungry, stay foolish)
原文地址:https://www.cnblogs.com/h-hkai/p/8227406.html