集合論中的一個很重要的用法
1,map簡介
map是STL的一個關聯容器,它提供一對一的hash。
- 第一個可以稱爲關鍵字(key),每個關鍵字只能在map中出現一次;
- 第二個可能稱爲該關鍵字的值(value);
map以模板(泛型)方式實現,可以存儲任意類型的數據,包括使用者自定義的數據類型。
Map主要用於資料一對一映射(one-to-one)的情況,map內部的實現自建一顆紅黑樹,這顆樹具有對數據自動排序的功能。
在map內部所有的數據都是有序的,後邊我們會見識到有序的好處。比如一個班級中,每個學生的學號跟他的姓名就存在著一對一映射的關係。
2,map的功能
自動建立key - value的對應。key 和 value可以是任意你需要的類型,包括自定義類型。
3,使用map
使用map得包含map類所在的頭文件
#include <map> //注意,STL頭文件沒有擴展名.h
map對象是模板類,需要關鍵字和存儲對象兩個模板參數:
std:map<int, string> personnel;
這樣就定義了一個用int作爲索引,並擁有相關聯的指向string的指針.
爲了使用方便,可以對模板類進行一下類型定義,
typedef map<int,CString> UDT_MAP_INT_CSTRING;
UDT_MAP_INT_CSTRING enumMap;
4,map的構造函數
map共提供了6個構造函數,這塊涉及到內存分配器這些東西,略過不表,在下面我們將接觸到一些map的構造方法,這裏要說下的就是,我們通常用如下方法構造一個map:
map<int, string> mapStudent;
5. map的基本操作函數
C++ maps是一種關聯式容器,包含“關鍵字/值”對 begin() 返回指向map頭部的迭代器 clear() 刪除所有元素 count() 返回指定元素出現的次數, (幫助評論區理解: 因爲key值不會重複,所以只能是1 or 0) empty() 如果map爲空則返回true end() 返回指向map末尾的迭代器 equal_range() 返回特殊條目的迭代器對 erase() 刪除一個元素 find() 查找一個元素 get_allocator() 返回map的配置器 insert() 插入元素 key_comp() 返回比較元素key的函數 lower_bound() 返回鍵值>=給定元素的第一個位置 max_size() 返回可以容納的最大元素個數 rbegin() 返回一個指向map尾部的逆向迭代器 rend() 返回一個指向map頭部的逆向迭代器 size() 返回map中元素的個數 swap() 交換兩個map upper_bound() 返回鍵值>給定元素的第一個位置 value_comp() 返回比較元素value的函數