deque双端队列

deque
1 生成构造
// constructing deques
#include <iostream>
#include <deque>

int main ()
{
  unsigned int i;

  // constructors used in the same order as described above:
  std::deque<int> first;                                // empty deque of ints
  std::deque<int> second (4,100);                       // four ints with value 100
  std::deque<int> third (second.begin(),second.end());  // iterating through second
  std::deque<int> fourth (third);                       // a copy of third

  // the iterator constructor can be used to copy arrays:
  int myints[] = {16,2,77,29};
  std::deque<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );//fifth={16,2,77,29}
std::deque<int> first (3);    // deque with 3 zero-initialized ints
std::deque<int> second (5);   // deque with 5 zero-initialized ints
first=second;                 //first size is 5

  return 0;
}
2 操作
2.1 大小和容量
/*
 * deque 双向队列,链式存储,相对于vector不能使用的函数有capacity(),reverse()
 * 但是可以在前端面进行插入push_font()
*/
#include <iostream>
#include <deque>

int main ()
{
    std::deque<int> mydeque(5,1);
  //capacity
    mydeque.size();     //size is 5
    mydeque.resize(4);  //size is 8
    mydeque.empty();    //return 0
    mydeque.shrink_to_fit();
  return 0;
}
2.2 比较
2.3 find
2.4 截取部分
2.5 增,插,删,改
/*
 * modify element
 * assign()     push_back()     push_front()
 * pop_back()   pop_front()     insert()
 * erase()      swap()          clear()
*/
#include <iostream>
#include <deque>

int main ()
{
    std::deque<int> mydeque(5,1);
  //modify element
    mydeque.assign(3,2);        //mydeque={2,2,2}
    mydeque.push_back(1);       //mydeque={2,2,2,1}
    mydeque.push_front(1);      //mydeque={1,2,2,2,1}
    mydeque.pop_back();         //mydeque={1,2,2,2}
    mydeque.pop_front();        //mydeque={2,2,2}

    mydeque.insert(mydeque.begin(),6);                  //mydeque={6,2,2,2}
    int ints[]={9,5,2,7};
    mydeque.insert(mydeque.cbegin()+4,ints,ints+4);     //mydeque={6,2,2,2,9,5,2,7}

    mydeque.erase(mydeque.cbegin());                    //mydeque={2,2,2,9,5,2,7}
    mydeque.erase(mydeque.cbegin()+3,mydeque.cend());   //mydeque={2,2,2}
    mydeque.clear();                                    //mydeque={}

    std::deque<int> mydeque2(4,1);
    mydeque.swap(mydeque2);                             //mydeuqe size is 4
    return 0;
}
2.6 element access
/*
 * elemen access
 *operator[]    at()    back()  front()
*/
#include <iostream>
#include <deque>

int main ()
{
    std::deque<int> mydeque(5,1);
  //element access
    int integer1=mydeque[1];
    integer1=mydeque.at(1);
    integer1=mydeque.back();
    integer1=mydeque.front();
  return 0;
}

转载于:https://www.cnblogs.com/zylg/p/9831889.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值