iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
Software Development

C++ 30天屠龍記系列 第 13

C++ 30天屠龍記(第13天): Map

  • 分享至 

  • xImage
  •  

今天要講的資料結構是 Map,在我眼裡比Class/Struct 用途窄一層,但卻比Vector的功能強一些。

Map

這裡又要借用一下hannahpun大大的圖,因為這真的很精緻

Map 關心的是 { 鍵(key): 值(value)} 之間的關係。

  • 簡單來說你可以當key是一件物件的屬性,而value是他的數值。
  • 你也可以當key是一個詞語,value是他的解釋。
  • 也可以當key是一個condition,value是他的動作等等。

Key只能在 map 中出現一次。

Map的別稱在其他Language有Dict、Hashmap、hashtable等等。

來建立Map吧

建立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分別在那裡呢?

還記得你們用vector的時候必須使用數字去找到value嗎?然而你可以給map不同的名字,就像貼上不同的標籤一樣。

這樣除了你自己不用去記以外,電腦程式也不需要僅僅靠數字標籤到處翻找(這是非常慢的)。

而且vector中的數字和該資料其實沒有關係。所以如果要vector表達關係,必須創建兩個vector並用index把他們的關係連起來。


上一篇
C++ 30天屠龍記(第12天): 對象式編程
下一篇
C++ 30天屠龍記(第14天): C++異步式編程
系列文
C++ 30天屠龍記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言