該結構適用於查、改操作;不適用於交換、刪除、增加數據的操作;其性能、速度與原始數組相差無幾。
常用函數
該結構適用任何地方插入和刪除;隨機訪問比較慢。
在鏈表的任何位置(除尾部不能插入和刪除)進行插入/刪除操作都非常快;只能從頭到尾遍歷,不能從尾部開始遍歷(不提供size()成員函數;不支持反向迭代器,比如rbegin()等成員函數;不提供back()、push_back()和pop_back())。
該結構特點是先進先出;隊尾添加數據,隊頭刪除數據;不適用於查找數據。
該結構是隊頭隊尾都可以添加刪除數據。
該結構用於尾部插入和刪除的情況;中間和頭部插入比較麻煩。
該結構特點是後進先出。
該結構是一種類似數組的結構,它的每一個元素只能是0或1,每個元素僅用1bit空間。
該結構的內部是紅黑樹(具有對數據自動排序的功能);可以存儲任意類型的數據,包括使用者自定義的數據類型;關鍵字(key),只能在map中出現一次,第二個稱該關鍵字值(value)。
該結構主要用於一個key值對應多個value的情況,即允許重複的元素。
該結構內部是哈希表(存儲元素沒有進行排序),根據key查找單個value時非常高效;查詢單個key的時候效率比map高,但是要查詢某一範圍內的key值時比map效率低。
該結構是關鍵字即值,即只保存關鍵字的容器。
vector<bool>可以動態增長,但不能方便地進行位運算;bitset可以方便的進行二進位位運算,但不能動態增長。dynamic_bitset提供豐富的位運算,同時長度動態可變。
c++提供的映射型容器map和multi_map,把一個key映射到value,但是這種映射關係是單向的,不能反過來,bimap提供雙向映射的能力;對於bimap<X,Y>存在左視圖和右視圖。bimap.left相當於map<X,Y>,bimap.right相當於map<Y,X>;key/value值對必須為唯一的,插入任何一個重複的都是無效的。
bimap<int,int> bimap_;
該結構支持標準的容器操作(pushback),但大小固定,當到達容器尾將自動重用最初的空間;實現了一個大小固定的循環隊列,就像deque和stack的混合體,可以像普通雙端隊列那樣執行pushback(),pushfront(),insert()等,也可像棧一樣用pop_back(),pop_front()刪除元素。
該結構是一個有固定數目元素的容器,每個元素類型可以不同;類似pair,只是裡面的元素更多,可將pair可以看作tuple的特例,tuple是pair的泛化。
該結構只能容納一個元素,但是這個元素可以是任意類型(int、float、string、stl容器、任何自定義類型)。
該結構是枚舉類型,但其元素可以string、vector等複雜類型;與any的區別,variant是有界類型,元素類型範圍由用戶指定,any是無界類型,可以容納任意的類型。
該結構實現了stl風格的多維數組,比使用原始多維數組、vector<vector>更好。
多個屬性值的樹形數據結構,可以類似路徑的簡單方式訪問任意節點的屬性,而每個節點都可以用類似stl的風格遍歷子節點,特別適用於應用程序的配置數據處理,可以解析xml、ini、json、info四種格式的文本數據。
推薦閱讀: