deque,list,queue,priority_queue
1.deque
?
deque雙端隊列容器與vector一樣,采用線性表順序存儲結構,但與vector唯一不同的是,deque采用分塊的線性存儲結構來存儲數據,每塊的大小一般為512字節,稱為一個deque塊,所有的deque使用一個map塊進行管理,每個map數據項記錄各個deque塊的首地址,這樣一來,deque塊在頭部和尾部都可以插入和刪除元素,而不需要移動其它元素,在尾部插入元素使用push_back(),在頭部插入使用push_front(),在中間插入使用insert(),但是在中間插入只是覆蓋原來位置的元素,并不會新增加元素。
?
而刪除元素同樣分為頭,尾,中,刪除頭部元素用pop_front(),刪除尾部元素用pop_back(),而刪除中間的元素就用erase().
?
?
2.list
?
list容器實現了雙向鏈表的數據結構,數據元素是通過鏈表指針串連成邏輯意義上的線性表,這樣,對鏈表的任意位置進行插入,刪除和查找都是極快速的。
?
同樣的,往鏈表的容器中插入元素跟deque一樣,也是使用push_back,push_front,insert();
而remove()是刪除鏈表中的一個元素,值相同的都會被刪除,pop_front刪除頭元素,pop_back()刪除尾元素,erase()是刪除迭代器位置上的元素。
?
另外,list還有sort()排序函數,還有unique()方法,可以剔除連續重復元素,只保留一個。
?
?
3.stack堆棧容器
?
這個沒有什么好說的,操作主要有:push(),empty(),top()(讀取棧頂元素),pop()
?
?
4.queue隊列容器
?
也沒有什么說的。
?
?
5.priority_queue優先隊列容器
?
priority_queue優先隊列容器與隊列一樣,只能從隊尾插入元素,從隊首刪除元素,但是它有一個特性,就是隊列中最大的元素總是位于隊首,所以出隊時,并非按照先進先出的原則進行,而是將當前隊列中最大的元素出隊,這點類似于給隊列里的元素進行了由大到小的順序排序,默認規則是從小到大,當然,可以重載"<"來重新定義規則。
?
?
總結
以上是生活随笔為你收集整理的deque,list,queue,priority_queue的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: set与map容器
- 下一篇: HDU4546(优先队列)