STL之deque用法


deque:雙端隊列

底層是一個雙向鏈表。

常用的有隊列的尾部入隊、首部出隊。

 

 

普通隊列:queue
queue 模板類的定義在<queue>頭文件中。
與stack 模板類很相似,queue 模板類也需要兩個模板參數,一個是元素類型,一個容器類
型,元素類型是必要的,容器類型是可選的,默認為deque 類型。
定義queue 對象的示例代碼如下:
queue<int> q1;
queue<double> q2;

queue 的基本操作有:
入隊,如例:q.push(x); 將x 接到隊列的末端。
出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入隊列的元素。
訪問隊尾元素,如例:q.back(),即最后被壓入隊列的元素。
判斷隊列空,如例:q.empty(),當隊列空時,返回true。
訪問隊列中的元素個數,如例:q.size()

 

摘自:http://www.cnblogs.com/liubilan/p/9461141.html

deque - 雙向隊列

1.構造

無參構造:

deque<T> a;  //<>內自定義數據類型;

帶參構造:

deque(beg,end); //構造函數將[beg, end)區間中的元素拷貝給本身。注意該區間是左閉右開的區間。
deque(n,elem); //構造函數將n個elem拷貝給本身。
deque(const deque &deq); //拷貝構造函數。

 

2.頭部&尾部的添加和刪除

deque.push_back(elem); //在容器尾部添加一個數據
deque.push_front(elem); //在容器頭部插入一個數據
deque.pop_back(); //刪除容器最后一個數據
deque.pop_front(); //刪除容器第一個數據

 

3.中間數據存取

deque.at(idx); //返回索引idx所指的數據,如果idx越界,拋出out_of_range。
deque[idx]; //返回索引idx所指的數據,如果idx越界,不拋出異常,直接出錯。
deque.front(); //返回第一個數據。
deque.back(); //返回最后一個數據

 

4.元素插入

deque.insert(pos,elem); //在pos位置插入一個elem元素的拷貝,返回新數據的位置。
deque.insert(pos,n,elem); //在pos位置插入n個elem數據,無返回值。
deque.insert(pos,beg,end); //在pos位置插入[beg,end)區間的數據,無返回值。

 

5.數據刪除

deque.clear(); //移除容器的所有數據
deque.erase(beg,end); //刪除[beg,end)區間的數據,返回下一個數據的位置。
deque.erase(pos); //刪除pos位置的數據,返回下一個數據的位置。

 

6.迭代指針

deque.begin(); //返回容器中第一個元素的迭代器。
deque.end(); //返回容器中最后一個元素之后的迭代器。
deque.rbegin(); //返回容器中倒數第一個元素的迭代器。
deque.rend(); //返回容器中倒數最后一個元素之后的迭代器。

 

7.賦值&拷貝

deque.assign(beg,end); //將[beg, end)區間中的數據拷貝賦值給本身。注意該區間是左閉右開的區間。
deque.assign(n,elem); //將n個elem拷貝賦值給本身。
deque& operator=(const deque &deq); //重載等號操作符 
deque.swap(deq); // 將vec與本身的元素互換

 

8.大小&判斷非空

deque.size(); //返回容器中元素的個數
deque.empty(); //判斷容器是否為空
deque.resize(num); //重新指定容器的長度為num,若容器變長,則以默認值填充新位置。如果容器變短,則末尾超出容器長度的元素被刪除。
deque.resize(num, elem); //重新指定容器的長度為num,若容器變長,則以elem值填充新位置。如果容器變短,則末尾超出容器長度的元素被刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM