deque雙向隊列
對於雙向隊列,與隊列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雙向隊列