本文意在整理 C++ map 的用法,和需要注意的地方。
include
在 C++ 程序中,使用 map 要 #include <map>
。
定义 map
map 是一对一映射的数据结构。
map<KeyType, ValueType> mapp;
定义 map,key 类型为 KeyType,value 类型为 ValueType。
(图片来源)
添加元素
1 2 3 4 5
| // 第一种添加方式 mapp.insert(pair<KeyType, ValueType>(key, value)); // 第二种添加方式 mapp[key] = value;
|
删除元素
1 2 3 4 5 6 7 8
| // 第一种删除方式 mapp.erase(key); // 第二种删除方式 map<KeyType, ValueType>::iterator iter = mapp.find(key) if (iter != mapp.end()) { // 找到 key mapp.erase(iter) }
|
查找元素
1 2 3 4 5 6 7 8 9 10
| map<KeyType, ValueType>::iterator iter = mapp.find(key); // 找到 key if (iter != mapp.end()) { } // 找不到 key else { }
|
(图片来源)
遍历元素
1 2 3 4
| for (map<KeyType, ValueType>::iterator iter = mapp.begin(); iter != mapp.end(); iter++) { KeyType key = iter->first; ValueType val = iter->second; }
|
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <iostream> #include <map> using namespace std; void printMap(map<char, int>& mapp) { for (map<char, int>::iterator iter = mapp.begin(); iter != mapp.end(); iter++) { char key = iter->first; int val = iter->second; cout << key << " : " << val << endl; } cout << "--------------" << endl; } void findElement(map<char, int>& mapp, char key) { map<char, int>::iterator iter = mapp.find(key); if (iter != mapp.end()) { cout << "找到 " << key << endl; } else { cout << "找不到 " << key << endl; } } int main() { map<char, int> mapp; mapp.insert(pair<char, int>('a', 1)); mapp['b'] = 2; mapp['c'] = 3; mapp['d'] = 4; mapp['e'] = 5; mapp['f'] = 6; mapp['g'] = 7; mapp.insert(pair<char, int>('a', 2)); printMap(mapp); mapp.erase('a'); mapp.erase('c'); mapp.erase('f'); mapp.erase('x'); printMap(mapp); findElement(mapp, 'b'); findElement(mapp, 'd'); findElement(mapp, 'x'); printMap(mapp); }
|
参考资料