1. 程式人生 > >deque雙向隊列

deque雙向隊列

方法 ron 末尾 重新 容器 wap erase n) insert

對於雙向隊列,與隊列queue以及vector容器的區別就在於,名字不同,也就是它是雙向的,可以從頭開始操作,也可以從末尾開始操作。

雙向隊列的常用方法跟隊列queue差不多:

頭文件: #include<deque>

函數:

構造/析構

  deque<int>q 構造一個空的雙向隊列

  deque<int>q(q1) 構造q,並復制q1

  deque<int>q(n) 創建deque,含有n個數據,數據均由缺省構造函數產生

  deque<int>q(beg,end) 創建一個以[beg,end)區間的deque

  q.~deque<int>() 銷毀所有的數據,釋放內存

賦值

  q.assign(beg,end) 將[beg,end)區間中的數據賦值給q

  q.assign(n,int) 將n個int 的拷貝值給q

數據訪問

  q.at(idx) 返回索引 idx 所指的數據,如果 idx 越界,拋出 out_of_range

  q.fron() 返回第一個數據

  q.back() 返回最後一個數據

  q.begin() 返回指向第一個數據的叠代器

  q.end() 返回指向最後一個數據的下一個位置的叠代器

  q.rbegin() 返回逆向隊列的第一個數據

  q.rend() 返回指向逆向隊列的最後一個數據的下一個位置的叠代器

加入數據

  q.push_back() 在尾部加入一個數據

  q.push_front() 在頭部插入一個數據

  q.insert(pos,int) 在pos 位置插入一個 int 數據的拷貝 ,返回新數據位置

  q.insert(pos,n,int) 在pos 位置插入n 個 int 數據 ,無返回值

  q.insert(pos,beg,end) 在pos位置插入在 [beg,end)區間的數據,無返回值

刪除數據

  q.pop_back() 刪除最後一個數據

  q.pop_front() 刪除頭部數據

  q.erase(pos) 刪除pos位置的數據 ,返回下一個數據的位置

  q.erase(beg,end) 刪除[begin,end) 區間的數據,返回下一個數據的位置

其他操作

  q.empty() 判斷容器是否為空

  q.max_size()  返回容器中最大數據的數量

  q.resize(num) 重新制定隊列的長度

  q.size() 返回容器中實際數據的個數

  q.swap(q1) 將q和q1的元素互換

  swap(q,q1) 同上

    

  

deque雙向隊列