zoukankan      html  css  js  c++  java
  • deque双端队列容器

     1 //deque双端队列容器
     2 //deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector不同的是,
     3 //deque采用的分块线性存储结构来存储数据,每块的大小一般为512字节,成为一个deque块
     4 //所有deque块使用一个Map块进行管理,每个Map数据项纪录各个deque块的首地址,这样一来,deque的
     5 //头部和尾部都可插入和删除元素,而不需移动其他元素 。使用push_back()方法在尾部插入元素,会扩张队列
     6 //而使用push_front()方法在首部插入元素和使用insert()方法在中部插入元素,只是将原位置上的元素值覆盖,不会增加新元素
     7 
     8 
     9 #include<deque>
    10 #include<iostream>
    11 using namespace std;
    12 int main()
    13 {
    14     //创建没有任何元素的deque对象 
    15     deque<int> d;
    16     //创建具有n个元素的deque对象
    17     deque<int> d1(10); 
    18     //创建具有n个元素的deque对象,并赋初值
    19     deque<int> d2(10,8.5);
    20     d.push_back(1);
    21     d.push_back(2);
    22     d.push_back(3);
    23     cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
    24     //从头部插入元素不会增加新的元素,只将原有的元素覆盖
    25     d.push_front(10);
    26     d.push_front(20);
    27     cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
    28     //从中间插入元素,不会增加新元素,只将原有的元素覆盖
    29     d.insert(d.begin()+1,88);
    30     cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;
    31     //前向遍历
    32     for(int i=0;i<d.size();i++)
    33     {
    34         cout<<d[i]<<" ";
    35      } 
    36      cout<<endl;
    37      //以前向迭代器的方式遍历
    38      deque<int>::iterator it;
    39      for(it=d.begin();it!=d.end();it++)
    40      {
    41          cout<<*it<<" ";
    42       } 
    43       cout<<endl;
    44       deque<int> d3;
    45       d3.push_back(1);
    46       d3.push_back(2);
    47       d3.push_back(3);
    48       d3.push_back(4);
    49       d3.push_back(5);
    50       d3.pop_front();
    51       d3.pop_front();
    52       deque<int>::iterator it1;
    53       for(it1=d3.begin();it1!=d3.end();it1++)
    54       {
    55           cout<<*it1<<" ";
    56       }
    57       cout<<endl;
    58       //从尾部删除元素 
    59       d3.pop_back();
    60       for(it1=d3.begin();it1!=d3.end();it1++)
    61       {
    62           cout<<*it1<<" ";
    63       }
    64       cout<<endl;
    65       d3.erase(d3.begin()+1);
    66       for(it1=d3.begin();it1!=d3.end();it1++)
    67       {
    68           cout<<*it1<<" ";
    69       }
    70       cout<<endl;
    71       d3.clear();
    72       cout<<d3.size()<<endl;
    73     return 0;
    74  } 
  • 相关阅读:
    Segment Routing之IPv6 SR概述
    ping6 connect: Invalid argument
    glance image-list
    SRv6技术研究和组网设计
    physical_interface_mappings
    bond
    srv6 tools---SRext
    srv6
    8月18号
    8月17号
  • 原文地址:https://www.cnblogs.com/zjl192628928/p/9163933.html
Copyright © 2011-2022 走看看