STL — 7個常用容器的區別
7個常用容器的區別
1.STL容器分類:
STL的容器可以分為以下幾個大類:
一 順序(序列)容器, 有vector, list, deque, string,stack( 介面卡類), queue( 介面卡類), priority queues( 介面卡類)
二 關聯容器, 有set, multiset, map, multimap, bitset,hash_set, hash_map, hash_multiset, hash_multimap
2.容器比較
vector | deque | list | set | multiset | map | multimap | |
名稱 | 向量容器 | 雙向佇列容器 | 列表容器 | 集合 | 多重集合 | 對映 | 多重對映 |
內部數 據結構 |
連續儲存的陣列形式(一端開口的組) |
連續或分段連續儲存陣列(兩端 開口的陣列) |
雙向環狀連結串列 | 紅黑樹(平衡檢索二叉樹) | 紅黑樹 | 紅黑樹 | 紅黑樹 |
標頭檔案 | #include <vector> | #include <deque> | #include <list> | #include <set> | #include <set> | #include <map> | #include <map> |
操作元素的方式 | 下標運算子:[0](可以用迭代器,但插入刪除操作時會失效) |
下標運算子或迭代器 |
只能用迭代器(不斷用變數值來遞推新值,相當於指標),不支援使用下標運算子 |
迭代器 | 迭代器 | 迭代器 | 迭代器 |
插入刪除操作迭代器是否失效 | 插入和刪除元素都會使迭代器失效 | 插入任何元素都會使迭代器失效。刪除頭和尾元素,指向被刪除節點迭代器失效,而刪除中間元素會使所有迭代器失效 | 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 | 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 | 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 | 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 | 插入,迭代器不會失效。刪除,指向被刪除節點迭代器失效 |
3.各容器特點比較以及選擇
vector | deque | list | set | multiset | map | multimap | |
名稱 | 向量容器 | 雙向佇列容器 | 列表容器 | 集合 | 多重集合 | 對映 | 多重對映 |
特點 |
增加和獲取元素效率 很高,插入和刪除的 效率很低 |
增加和獲取元素效率 較高,插入和刪除的 效率較高 |
增加和獲取元素效率 很低,插入和刪除的 效率很高 |
1.鍵(關鍵字)和值(資料)相等(就是模版只有一個引數,鍵和值合起來) 2.鍵唯一 3.元素預設按升序排列 |
1.鍵和值相等 2.鍵可以不唯一 3.元素預設按升序排列 |
1.鍵和值分開(模版有兩個引數,前面是鍵後面是值) 2.鍵唯一 3.元素預設按鍵的升序排列 |
1.鍵和值分開 2.鍵可以不唯一 3.元素預設按鍵的升序排列 |
定義容器 |
vector<string> book(50); | deque<string> book(50); | list<string> book; | set<string> book; | multiset<string> book; | map<int,string> book; | multimap<int,string> book; |
4.各容器的圖表說明
4.1 vector
4.2 deque
4.3 list
4.4 map/multimap
4.5 set/multiset
相關推薦
STL — 7個常用容器的區別
7個常用容器的區別 1.STL容器分類: STL的容器可以分為以下幾個大類: 一 順序(序列)容器, 有vector, list, deque, string,stack( 介面卡類), queue( 介面卡類), priority queues( 介面卡類) 二 關聯容器,
C++STL裡面7個常用容器的比較
1.STL容器分類: STL的容器可以分為以下幾個大類: 一 順序(序列)容器, 有vector, list, deque, string,stack( 介面卡類), queue( 介面卡類), priority queues( 介面卡類) 二 關聯容器, 有set, multiset,
STL基礎4:STL7個常用容器的比較
1.STL容器分類: STL的容器可以分為以下幾個大類: 一 順序(序列)容器, 有vector, list, deque, string,stack( 介面卡類), queue( 介面卡類), priority queues( 介面卡類) 二 關聯容器, 有
C++STL幾種常用容器簡要歸納
本文參考李煜東《演算法競賽進階指南》,筆者作歸納總結。 本文將簡要介紹STL中vector,queue,priority_queue,deque,set,multiset,map,bitset八種容器及其操作方法。 vector 使用此容器需在程式前加上標頭檔
stl的中常用幾個容器的介紹與特點。
<1>vector容器 vector容器是一個動態陣列的結構,在記憶體中有一個指標指向一塊連續的記憶體。類似陣列結構一樣。它的特點支援隨機訪問資料,因為其在記憶體中的單元是連續。如此之外,還可以vector的大小是可以自動增長的。當向一個vector中繼續
嵌入式系統常用的7個技巧
淩陽教育 嵌入式系統 從規範完善的開發周期到嚴格執行和系統檢查,開發高可靠性嵌入式系統的技術有許多種。淩陽教育的小編就給大家說一說我所在各個平臺看到的7個比較好操作且可以長久使用的技巧,它們對於確保系統更加可靠地運行並捕獲異常行為大有幫助 技巧1——用已知值填充ROM 軟
python開發[第二篇]------str的7個必須掌握的方法以及五個常用方法
bre for repl rip dex += tin 下標 ict 在Python中 基本數據類型有 str int boolean list dict tuple等 其中str的相關方法有30多個 但是常用的就以下7個 join # split # f
STL常見容器區別
小結 在實際使用過程中,到底選擇這幾種容器中的哪一個,應該根據遵循以下原則: 1、如果需要高效的隨機存取,不在乎插入和刪除的效率,使用vector; 2、如果需要大量的插入和刪除元素,不關心隨機存取的效率,使用list; 3、如果需要隨機存取,並且關心兩端資料的插入和刪除
STL中基本容器區別
在STL中基本容器有: string、vector、list、deque、set、mapset 和map都是無序的儲存元素,只能通過它提供的介面對裡面的元素進行訪問set:集合, 用來判斷某一個元素是不是在一個組裡面,使用的比較少map:對映,相當於字典,把一個值對映成另一個值,如果想建立字典的話使
PHP 常用的四個fetch的區別
在php中,經常使用mysqli_fetch從資料庫返回的結果集中取資料,最常用的是mysqli_fetch_assoc(),mysqli_fetch_row(),mysqli_fetch_array(),mysqli_fetch_object(),在使用時,它們的差異如下: $publicMes = my
STL常用容器,以及一些函式
lower_bound() lower_bound(a, a+n, x);//a是陣列,n是長度 查詢“大於或者等於x的第一個位置” isalpha(ch): &
STL中常用容器的選擇
今天去面試問到了stl的常用容器演算法問題,但是提前沒準備,平時也沒太在意,還有就是忘了。總之,回答得很狼狽。 希望能在這裡整理一下,首先看了一下《STL原始碼剖析》中對STL六大元件是這樣介紹的: 容器(containers):各種資料結構,用來存放資料。從實現的角度看,
【C++】STL常用容器總結之十二:string類
13、string類 宣告 string類本不是STL的容器,但是它與STL容器有著很多相似的操作,因此,把string放在這裡一起進行介紹。 之所以拋棄char*的字串而選用C++標準程式庫中的string類,是因為他和前者比較起來,不必擔心記憶體是
【C++】STL常用容器總結之四:連結串列list
5、連結串列list List是每個節點包含前驅指標、後繼指標和資料域三個部分的雙向連結串列。List不提供隨機存取,訪問元素需要按順序走到需存取的元素,時間複雜度為O(n),在list的任何位置上執行插入或刪除操作都非常迅速,只需在list內部調整一下指標。
【C++】STL常用容器總結之八:對映map
9、對映map Map是鍵-值對的集合,map中的所有元素都是pair,可以使用鍵作為下標來獲取一個值。Map中所有元素都會根據元素的值自動被排序,同時擁有實值value和鍵值key,pair的第一元素被視為鍵值,第二元素被視為實值,同時map不允許兩個元素有
STL常用容器對比
STL的常用容器大致有以下8個: 1.vector vector是一種動態陣列,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率比較慢。vector有多個建構函式,預設的建構函式是構造一個初始長度為0的記
STL容器區別vector,list
最近在面試過程中面試官問道我一個問題,vector和list分別在什麼樣的場景下使用,這樣一問,問的我一頭霧水,回來之後翻了翻網頁,大概總結下這兩種容器的使用場景,也算是給自己一個提醒,做技術時刻得總結總結,而不是臨時抱佛腳。 1.vector vector就是動態
STL常用容器詳細解析
STL容器的實現原理 STL共有六大元件 1、容器。2、演算法。3、迭代器。4、仿函式。6、介面卡。 STL容器的實現原理 STL來管理資料十分方便,省去了我們自己構建資料結構的時間.其實,STL的實現也是基於我們常見的資料結
【C++】STL常用容器總結之五:雙端佇列deque
6、雙端佇列deque 所謂的deque是”double ended queue”的縮寫,雙端佇列不論在尾部或頭部插入元素,都十分迅速。而在中間插入元素則會比較費時,因為必須移動中間其他的元素。雙端佇列是一種隨機訪問的資料型別,提供了在序列兩端快速插入和刪除操
【C++】STL常用容器總結之九:集合set
10、集合set Map容器是鍵值對的集合,而set容器只是單純的鍵的集合,當只想知道一個值是否存在時,使用set容器是最合適的。在set中,所有元素都會根據其鍵值被自動排序,同時set中不允許兩個元素有相同的鍵值。 1、set容器的一些操作 Set容