今天要講的資料結構是 Map,在我眼裡比Class/Struct 用途窄一層,但卻比Vector的功能強一些。
這裡又要借用一下hannahpun大大的圖,因為這真的很精緻
Map 關心的是 { 鍵(key): 值(value)} 之間的關係。
Key只能在 map 中出現一次。
Map的別稱在其他Language有Dict、Hashmap、hashtable等等。
建立Map
map<string, string> Student_A;
//增加
mapStudent["grade"] = "A";
mapStudent["age"] = "20"
//有幾個
Student_A.size();
// 取值
cout << mapStudent["grade"] << endl;
//刪除
int n = Student_A.erase("age");
//也可以一開始把資料存進去
map<string, string> Student_B =
{
{"grade":"C"},
{"age":"22"}
};
//注意:key和value的類型必須是跟隨template的規定,
//也就是說<key_type,value_type>, 在這兩個例子就都是string了
尋找看是否存在
iter = Student_A.find("grade");
if(iter != Student_A.end())
cout<<"Find, the value is"<<iter->second<<endl;
else
cout<<"Do not Find"<<endl;
還記得你們用vector的時候必須使用數字去找到value嗎?然而你可以給map不同的名字,就像貼上不同的標籤一樣。
這樣除了你自己不用去記以外,電腦程式也不需要僅僅靠數字標籤到處翻找(這是非常慢的)。
而且vector中的數字和該資料其實沒有關係。所以如果要vector表達關係,必須創建兩個vector並用index把他們的關係連起來。