以下主要談談set和map
集合底層實現
是否有序
數值是否可以重複
能否改變量值
查詢效率
增刪效率
set紅黑樹有序否
否o(logn)
o(logn)
multiset
紅黑樹有序是否
o(logn)
o(logn)
unordered_set
雜湊表無序否否
o(1)
o(1)
c++中提供了三種set資料結構,其底層實現以及優劣如上表所示,紅黑樹是一棵平衡二叉搜尋樹,所以key值是有序的,但key不可更改,改動key值會導致整棵樹的錯亂,所以只能刪除和增加。
當需要使用到集合來解決雜湊問題的時候,首先考慮使用unordered_set,如果需要資料有序,則使用set,如果需要資料不可重複。則需要使用multiset。
對映底層實現
是否有序
數值是否可以重複
能否改變量值
查詢效率
增刪效率
map紅黑樹
key有序
key不可重複
key不可更改
o(logn)
o(logn)
multimap
紅黑樹key有序
key可重複
key不可更改
o(logn)
o(logn)
unordered_map
雜湊表key無序
key不可重複
key不可更改
o(1)
o(1)
map是乙個結構,map中對key有限制,而對value沒有限制,因為key的儲存方式是紅黑樹來實現的。總結
C 中常用結構
判斷語句結構要求程式設計師指定乙個或多個要評估或測試的條件,以及條件為真是要執行的語句和條件為假時要執行的語句.語句 描述 if 語句 乙個 if語句由乙個布林表示式後跟乙個或多個語句組成。if.else 語句 乙個if語句後可跟乙個可選的 else語句,else 語句在布林表示式為假時執行。巢狀 ...
c 雜湊結構
雜湊表查詢演算法 hash include include define true 1 define false 0 define hashsize 7 define nullkey 32768 無效索引 typedef int status int m 0 雜湊表表長 typedef struct...
C中常用的巨集
define 定義乙個預處理巨集 undef 取消巨集的定義 include 包含檔案命令 if 編譯預處理中的條件命令,相當於c語法中的if語句 ifdef 判斷某個巨集是否被定義,若已定義,執行隨後的語句 ifndef 與 ifdef相反,判斷某個巨集是否未被定義 elif 若 if,ifdef...