映射
簡介
又稱關聯陣列,按照特定順序存儲由鍵值(key)和映射值(value)組合而成的元素,可以想成 key 值允許用其他型態的陣列。
標頭檔
宣告
type1, type2 可為 int, char, string…,mp可為任意名字。
常用操作
函數 |
描述 |
insert() |
插入指定元素 |
erase() |
刪除指定元素 |
clear() |
刪除所有元素 |
count() |
回傳元素是否存在 |
find() |
回傳指向該元素的迭代器 |
empty() |
回傳是否為空 |
size() |
回傳有幾個元素 |
插入元素
分為兩種方法,一種是以陣列方式直接插入,若該 key 值已經存在,則 value 會更新成新的數值。
1 2 3 4
| mp["kirito"] = 10; mp["asuna"] = 16; mp["rem"] = 520; mp["kirito"] = 48763;
|
另一種則是使用 insert() 函數,把 key 值和 value 值包裝成一個 pair 的形式插入。和陣列插入不一樣的是,若該 key 值已經存在,則不插入,回傳一個指向該元素的迭代器。
1 2 3 4
| mp.insert(pair<string, int>("kirito", 10)); mp.insert(pair<string, int>("asuna", 16)); mp.insert(pair<string, int>("rem", 520)); mp.insert(pair<string, int>("kirito", 48763));
|
範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <iostream> #include <map> using namespace std;
int main(){ map<string, int> mp; mp["克萊茵"] = 10; mp["asuna"] = 16; mp.insert(pair<string, int>("rem", 520)); mp.insert(pair<string, int>("桐谷和人", 48763)); cout << "目前元素個數為 " << mp.size() << "\n"; cout << "此元素的value為 " << mp.find("克萊茵")->second << "\n"; mp.erase("克萊茵"); cout << "此元素的value為 " << mp.find("克萊茵")->second << "\n"; for(auto it = mp.begin(); it != mp.end(); ++it){ cout << it -> first << " " << it -> second << "\n"; } mp.clear(); cout << "是否為空 " << mp.empty() << "\n";
return 0; }
|
目前元素個數為 4
此元素的value為 10
此元素的value為 17377760
asuna 16
rem 520
桐谷和人 48763
是否為空 1
參考資料:cplusplus.com