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)
  • 相关阅读:
    SET TRANSACTION
    SET SESSION AUTHORIZATION
    SET CONSTRAINTS
    SET
    services
    send, sendto, sendmsg
    并列句分析
    cURL 学习笔记与总结(3)模拟登录博客园并下载个人随笔首页
    SQLServer2019安装教程
    Java实现 LeetCode 85 最大矩形
  • 原文地址:https://www.cnblogs.com/h-hkai/p/8227406.html
Copyright © 2011-2022 走看看