deque是雙向隊列,即可以在頭部插入刪除,也可以在尾部插入刪除。內部并不連續,這一點和vector并不一樣。可能第1個元素和第2個元素的地址是不連在一起的。在使用時用it迭代器會安全一點。
這是c++ 98標準的,不是c++11的。11標準新加的函數沒在這里說明。里面大部分函數是經過測試的才得出的結論。
函數(下面將iterator簡化為it) | 描述 |
Void?c.assign(it?beg,it?end) | 將拷貝[beg;?end)區間中的數據用覆蓋式地賦值給c。第2個參數是不包含元素的。 這兩個函數均會將原來的容器清空再賦值。Iterator是c相同的容器類型。 |
it?c.at(int?idx)? | 傳回索引idx所指的數據,idx從0開始,如果idx越界,拋出out_of_range。 |
reference?c.back()? | 傳回最后一個數據,不檢查這個數據是否存在。只傳不刪。注意返回值與begin不同。 |
it?c.begin()? | 傳回迭代器中的第一個數據地址。返回的是第1個數據的地址,即iterator型。 |
Void?c.clear()? | 移除容器中所有數據,被清空了,再訪問里面的數據會出錯。 |
Void?c.empty()? | 判斷容器是否為空。返回值為bool型。若空則返true,若非空返false。 |
it?c.end()? | 指向迭代器中的最后一個數據的下一個數據的地址,該地址是沒有元素的,與begin搭配的。若容器為空,返回與begin同樣地址。 |
It?c.erase(it?pos) | 刪除pos位置的數據,傳回下一個數據的位置。 |
Reference?c.front()? | 傳回容器中第一個數據,不檢查這個數據是否存在。只傳不刪。 |
c.get_allocator() | 使用構造函數返回一個拷貝。//此函數暫不知道怎么用,windows下不太一樣。原型allocator_type?get_allocator()?const; |
It?c.insert(it?pos,元素類型?elem)? | 在pos位置插入一個elem元素拷貝,傳回新數據位置。邏輯上pos處的元素就往后移了。 |
Int?c.max_size()? | 返回容器中可容納多少個元素。不同類型的deque,可容納數量不同。 |
Void?c.pop_back()? | 刪除最后一個數據。 |
Void?c.pop_front()? | 刪除頭部數據。 |
Void?c.push_back(元素類型?elem)? | 在尾部加入一個數據。 |
Void?c.push_front(元素類型?elem)? | 在頭部插入一個數據。 |
It?c.rbegin()? | 傳回一個逆向隊列的第一個數據的地址。使用這兩個可以逆向輸出。 |
It?c.rend()? | 傳回一個逆向隊列的最后一個數據的下一個位置的地址。 |
Void?c.resize(int?num,可選的默認值)? | 重新指定隊列的元素數量為num個。2種情況:1.若num比存在的元素個數要少,則刪除尾部的元素以調整個數。2.若num比實際存在的元素要多,則在實際元素之后填充默認值以調整個數。(第2個元素為可選,若沒有則默認為該類型的默認值) |
Int?c.size()? | 返回容器中目前存放了多少個元素。(這個和max_size不同) |
Void?c1.swap(deuqe?c2)? | 將c1和c2中的元素互換,c1和c2都是同一類型的deque。 |
deque<Elem>?c | 創建一個空的deque。Elem可以為int、char等等很多種類型。 |
?