stl裡的容器按元素在容器內的排序方式,分序列式和關聯式。
c++中的array就是乙個序列式容器,其中的元素集合呈線性關係。
stl中的序列式容器:等。其中stack和queue在技術上稱之為介面卡,即內部機制採用其他容器實現。
1.vector
特徵:類似陣列,但可以空間大小自動隨元素的數量改變。
vector的迭代器:由於其使用的是連續線性的空間,所以其迭代器實際就是原生指標,且為 random acccess iterator.
注意:插入、刪除操作會造成原有迭代器的失效。
2.list
特徵:記憶體開銷小適用廣,因為是乙個帶頭結點的環狀雙向鍊錶,所以對任何位置的插入或刪除需要的時間為常數(隨資料規模增大)
list的迭代器:使用特定的iterator類,其為bidirectional iterator
注意:list不能使用stl提供的通用sort演算法。因為sort演算法只接受random access iterator,所以提供了自己的sort演算法。
3.deque(雙向佇列)
特徵:沒有容量的概念,因為它是以分段的連續空間組合而成,隨時可以增加一段空間拼接起來。
注意:非必要,應盡量使用vector而不是deque.的確需進行排序時,可以先將元素複製到vector,排序後再複製回deque.
4.stack
特徵:先進後出的資料結構,只可以在頂端進行元素操作。
stack不支援對元素的遍歷,因此沒有迭代器。
5.queue
特徵:先進先出的資料結構,實現方案和stack基本一樣
6.heap
stl定義了一些heap操作的演算法:包括建堆,push_heap,pop_heap,sort_heap等
7.priority queue
特徵:擁有權值概念的queue,加入的元素按權值大小排列。
注意:priority_queue也是container adapter,它以vector為儲存結構,再以heap演算法進行處理:priority_queue的元素存放在乙個vector當中,按元素權值排列成乙個heap。
本文僅作學習記錄,無任何商用目的。
容器淺入深出之LinkedList
list介面下的主要兩個實現類,arraylist已經討論過了。這次再看看linkedlist的底層實現 linkedlist所實現的介面和繼承的父類和arraylist差不多,但是它多實現了乙個deque介面 linkedlist是基於鍊錶實現的,其中每個元素其實是每個節點內部的element,l...
STL 容器總結(一)
一 所有容器的共通操作 1 equality 和 inequality 運算子,返回 true 或者 false。2 assignment 運算子,將某個容器複製給另乙個容器。3 empty 會在容器沒有任何元素的時候返回 true,否則 false。4 size 返回目前容器中持有元素的數目。5 ...
XGBoost淺入淺出
xgboost風靡kaggle 天池 datacastle kesci等國內外資料競賽平台,是比賽奪冠的必備大殺器。我在之前參加過的一些比賽中,著實領略了其威力,也取得不少好成績。如果把資料競賽比作金庸筆下的武林,那麼xgboost可謂屠龍刀,號令天下,莫敢不從!倚天不出,誰與爭鋒?xgboost工...