目錄
一、鍵值對
二、set
1. set的模板參數列表
2. set的構造
3. set的迭代器
4. set的容量
5. set的修改
6. set的查找
三、map
?1. map的模板參數列表
2. map的構造
3. map的迭代器
4. map的容量
5. map的修改
6. map的查找
一、鍵值對
用來表示具有一一對應關系的一種結構,該結構中一般只包含兩個成員變量key和value,key代 表鍵值,value表示與key對應的信息。比如:現在要建立一個英漢互譯的字典,那該字典中必然 有英文單詞與其對應的中文含義,而且,英文單詞與其中文含義是一一對應的關系,即通過該應 該單詞,在詞典中就可以找到與其對應的中文含義。
SGI-STL中關于鍵值對的定義:
template <class T1, class T2>struct pair
{typedef T1 first_type;typedef T2 second_type;T1 first;T2 second;pair(): first(T1()), second(T2()){}pair(const T1& a, const T2& b): first(a), second(b){}};
?
二、set
?
1. set的模板參數列表
T: set中存放元素的類型,實際在底層存儲的鍵值對。
Compare:set中元素默認按照小于來比較
Alloc:set中元素空間的管理方式,使用STL提供的空間配置器管理 ?
2. set的構造
3. set的迭代器
?
4. set的容量
5. set的修改
6. set的查找
?
三、map
- map是關聯容器,它按照特定的次序(按照key來比較)存儲由鍵值key和值value組合而成的元 素。
- 在map中,鍵值key通常用于排序和惟一地標識元素,而值value中存儲與此鍵值key關聯的 內容。鍵值key和值value的類型可能不同,并且在map的內部,key與value通過成員類型 value_type綁定在一起,為其取別名稱為pair: typedef pair value_type;
- 在內部,map中的元素總是按照鍵值key進行比較排序的。
- map中通過鍵值訪問單個元素的速度通常比unordered_map容器慢,但map允許根據順序 對元素進行直接迭代(即對map中的元素進行迭代時,可以得到一個有序的序列)。
- map支持下標訪問符,即在[]中放入key,就可以找到與key對應的value。
- map通常被實現為二叉搜索樹(更準確的說:平衡二叉搜索樹(紅黑樹))。
?
?1. map的模板參數列表
key: 鍵值對中key的類型
T: 鍵值對中value的類型
Compare: 比較器的類型,map中的元素是按照key來比較的,缺省情況下按照小于來比較,一般情況下(內置類型元素)該參數不需要傳遞,如果無法比較時(自定義類型),需要用戶自己顯式傳遞比較規則(一般情況下按照函數指針或者仿函數來傳遞)
Alloc:通過空間配置器來申請底層空間,不需要用戶傳遞,除非用戶不想使用標準庫提供的 空間配置器
2. map的構造
?