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