| 
 概念双端队列是一个类模板,其由若干个块构成,每个块中元素的地址是连续的,块之间的地址是不连续的。用户可以从前端或后端快速地插入与删除元素,并可以快速地随机访问元素,但在中间位置插入和删除元素速度较慢。deque不像vector一样将所有元素存放在一个连续的内存块,而是采用多个连续的存储块存放数据,由于重新分配空间后原有的元素不需要复制,所以空间的重新分配要快于vector。 
 声明#include <iostream>
#include <deque>
using namespace std;
int main(void){
    deque<int> dq1; 
    
    deque<int> dq2a = deque<int>(10); 
    deque<int> de2b(10); 
    
    deque<int> dq3a = deque<int>(5,1); 
    deque<int> dq3b(5,1); 
    
    int arr[] = { 1,2,3,4,5 };
    deque<int> dq4 = deque<int>(arr, arr + 5); 
    
    deque<int> dq5 = deque<int>(dq3b); 
    return 0;
}
 
 使用常用方法empty(): 队列判空size(): 返回队列元素个数front(): 取队头元素back(): 取队尾元素push_front(value): 在队头插入元素valuepush_back(value): 在队尾插入元素valuepop_front(): 删除队头元素pop_back(): 删除队尾元素clear(): 清空队列begin(): 返回指向第一个元素的正向迭代器end(): 返回指向最后一个元素的后一个位置的正向迭代器rbegin(): 返回指向最后一个元素的逆向迭代器rend(): 返回指向第一个元素前一个元素的逆向迭代器
 Example#include <iostream>
#include <deque>
using namespace std;
int main(void) {
    deque<int> dq = deque<int>();
    
    dq.push_back(5); 
    dq.push_back(10);
    dq.push_front(1); 
    dq.push_front(0);
    cout << dq.empty() << endl; 
    dq.pop_front(); 
    dq.pop_back(); 
    cout << dq.size() << endl; 
    int a = dq[0]; 
    for (auto each : dq) 
        cout << each << ends;
    cout << endl;
    deque<int>::iterator itr; 
    for (itr = dq.begin(); itr != dq.end(); itr++) 
        cout << *itr << ends;
    cout << endl;
    deque<int>::reverse_iterator ritr; 
    for (ritr = dq.rbegin(); ritr != dq.rend(); ritr++) 
        cout << *ritr << ends;
    cout << endl;
    cout << dq[0] << endl;
    dq.clear(); 
    return 0;
}
 |