zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    CentOS 6.5通过yum的方式安装MySql
    Hbase集群搭建
    Thread类的常见问题
    关hashMap跟hashTable的区别
    mysql 循环插入100w
    Centos 多个mysql数据库
    CentOS 搭建 FastDFS-5.0.5集群
    RPC
    dubbo简述
    自己去看dubbo源码
  • 原文地址:https://www.cnblogs.com/h-hkai/p/8227406.html
Copyright © 2011-2022 走看看