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;
}

猜你喜欢

转载自blog.csdn.net/qq_33564134/article/details/81453477