1.使用时添加头文件和命名空间
#include <string>
#include <vector>
#include <map> // 引入头文件
using std::string;
using std::vector;
using std::multimap; // 引入命名空间
using std::pair; // 例:mUidlist.insert(pair<int, string>(nUid, vData[0])); 需指明类型
using std::make_pair; // 例:mUidlist.insert(make_pair(nUid, vData[0])); 无需指明键值对的类型
2.三种遍历方法
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> mp;
mp["test1"] = 20;
mp["test2"] = 18;
mp["test3"] = 30;
// 方式一、迭代器
cout << "方式一、迭代器" << endl;
for (auto it = mp.begin(); it != mp.end(); it++) {
cout << it -> first << " " << it -> second << endl;
}
// 方式二、range for C++ 11版本及以上
cout << "\n方法二、 range for" << endl;
for (auto it : mp) {
cout << it.first << " " << it.second << endl;
}
// 方法三、 C++ 17版本及以上
cout << "\n方法三" << endl;
for (auto [key, val] : mp) {
cout << key << " " << val << endl;
}
return 0;
}
3.map容器包含的成员方法
begin() | 返回指向map头部的迭代器 |
clear() | 删除所有元素 |
count() | 返回指定元素出现的次数, (帮助评论区理解: 因为key值不会重复,所以只能是1 or 0) |
empty() | 如果map为空则返回true |
end() | 返回指向map末尾的迭代器 |
equal_range() | 返回特殊条目的迭代器对 |
erase() | 删除一个元素 |
find() | 查找一个元素 |
get_allocator() | 返回map的配置器 |
insert() | 插入元素 |
key_comp() | 返回比较元素 |
lower_bound() | 返回键值>=给定元素的第一个位置 |
max_size() | 返回可以容纳的最大元素个数 |
rbegin() | 返回一个指向map尾部的逆向迭代器 |
rend() | 返回一个指向map头部的逆向迭代器 |
size() | 返回map中元素的个数 |
swap() | 交换两个map |
upper_bound() | 返回键值>给定元素的第一个位置 |
value_comp() | 返回比较元素value的函数 |
ps:map和multimap区别:
- map不允许容器中有重复key值元素
- multimap允许容器中有重复key值元素