9.4 關聯容器
常用的兩個關聯容器set與map (關聯容器 associative-container)
map中是 key-value 鍵值對。
set 每個元素只包含乙個關鍵字
2.map 關聯陣列,儲存鍵值對
例如:
#include
#include
#include
#include
using
namespace std;
intmain()
m[word]++;
}for
(const
auto
&x : m)
return0;
}
( 其中關鍵字是string 而 值是size_t型別
word 未在容器中,則會建立乙個關鍵字,其值為0;
不管元素是不是新建立都為其加一。)
3.set 關鍵字即值,只儲存關鍵字的容器按關鍵字有序儲存元素
4.multimap關鍵字可重複的map
5.multiset關鍵字可重複的set
6.unordered_map 用雜湊函式組織的map
7.unorderde_set 用雜湊函式組織的set
(6,7 無序集合,按照特定的雜湊函式來排)
9.set高速度查詢
set s;
s.find
(something)
==s.
end(
);
這是沒有查詢到;
10.關聯容器不支援順序容器的位置相關的操作,例如push_front , push_back;
原因是關聯容器中元素是根據關鍵字儲存的,這些操作就沒啥意義。
且關聯容器不支援建構函式或插入操作這些接受乙個元素值和乙個數量值的操作。
11.map和set 中關鍵字是唯一的;
set對應的便有去重操作:
12.pair型別(定義在標頭檔案utility中)
pair《型別1,型別2> p
pair《型別3,vector> p;
pair是預設建構函式對資料成員進行值初始化;
型別1,2,3為空,size_t值為0
pair資料成員是public的,為first 和 second
make_pair(v1,v2)返回乙個v1和v2初始化的pair。
14.set的迭代器是const的,
15.新增元素方面;
關聯容器的insert 成員向容器中新增乙個元素或乙個元素範圍,
向set中只能插入不重複的元素
向map進行insert操作時,元素型別必須是pair:
或者make_pair(元素,元素)
或者pair《鍵,值》(元素,元素),
或者map《鍵型別,值型別》::value_type(元素,元素)
16.刪除元素。
17.map下標操作
m[k] 返回關鍵字為k的元素,沒有則建立
m.at[k]訪問關鍵字為k的元素,帶引數檢查,k不在則丟擲異常,out_of_range;
18.map訪問
查詢乙個指定的元素,不允許重複的可能find最優選擇,count還會統計有多少個元素有相同的關鍵字。
19.無序容器。不是用比較運算子來組織元素,而是使用乙個雜湊函式和關鍵字型別的==運算子。
c dll返回容器 C 學習筆記 關聯容器
目錄 兩個問題 與順序容器一樣,是一種特定型別物件的集合,不同的是,元素是通過關鍵字而不是位置來索引。我們知道c 標準庫中定義了順序容器,順序容器可以提供快速訪問的能力,當我們要在容器內查詢某個關鍵字時,例如我們要在句子中查詢某個單詞以及記錄單詞出現的次數時,使用順序容器就會十分繁瑣。關聯容器支援通...
c 筆記 關聯容器
map中的元素是一些關鍵字 值對,即鍵值對 set支援搞笑的關鍵字查詢操作,即檢查乙個給定的關鍵字是否在set中。型別map和multimap定義標頭檔案map中,型別set和multiset定義在標頭檔案set中。無序容器則定義在unordered map和unordered set中 按關鍵字有...
《C Primer》學習筆記 關聯容器
一,pair型別 pairp1 建立乙個空pair指標,兩個元素分別是t1,t2型別,採用值初始化 pairp1 v1,v2 first成員初始化為v1,second成員為v2 make pair v1,v2 建立新的pair物件 p1 p2 p1 p2 p.first 返回first成員 p.se...