1. 程式人生 > >STL — 7個常用容器的區別

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

相關推薦

STL7常用容器區別

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容