zoukankan      html  css  js  c++  java
  • C++ STL之deque的基本操作

    前两篇博文中已经介绍了vector和list的两种容器,我们发现他们各有各的优缺点,vector在内存中连续存储,支持随机访问,但是查找和删除的效率比较低,而list在内存中是链式存储的查找和删除的效率很高,但是不支持随机存储,那么deque就综合和两者的优点,将若干连续的内存通过某种手段拼接在一起,而看起来像是在同一段内存中,通过对[]运算符的重载可以使其像数组一样访问数据,而插入和删除操作效率只受所在内存段数据的影响。

    这里有一篇深入理解deque实现细节的博文:http://www.programlife.net/stl-deque.html

     1 #include<iostream>
     2 #include<deque>
     3 using namespace std;
     4 void print(deque<int> dq)
     5 {
     6     deque<int>::iterator it=dq.begin();
     7     for(;it!=dq.end();it++)
     8     {
     9         cout<<*it<<" ";
    10     }
    11     cout<<endl;
    12 }
    13 int main()
    14 {
    15     //初始化
    16     int num[10]={0,1,2,3,4,5,6,7,8,9};
    17     deque<int> dq(num,num+10);
    18     print(dq);
    19     
    20     //增加元素
    21     //insert
    22     deque<int>pp(num,num+3);
    23     print(pp);
    24     deque<int>::iterator it1=pp.begin();
    25     deque<int>::iterator it2=pp.end();
    26     dq.insert(dq.end(),it1,it2);
    27     print(dq);
    28     //push
    29     dq.push_back(10);
    30     dq.push_front(-1);
    31     print(dq);
    32 
    33     //删除deque中只有erase,没有remove
    34     //erase
    35     dq.erase(dq.begin()+5);
    36     print(dq);
    37     
    38     //[]的随机访问
    39     dq[1]=100;
    40     print(dq);
    41 
    42     return 0;
    43 }

  • 相关阅读:
    新浪微博采用Oauth发送图片和文字
    android proguard也有弱点
    POJ 2376
    POJ 3259
    POJ 2253
    POJ 1062
    POJ 2299
    POJ 2186
    POJ 1860
    POJ 2823
  • 原文地址:https://www.cnblogs.com/bewolf/p/4419381.html
Copyright © 2011-2022 走看看