map
访问前:
访问后:
测试代码:
#include<unordered_map>
#include<map>
#include<iostream>
using namespace std;
int main() {
map<int,int> map;
map[1] = 2;
map[2] = 4;
map[3] = 6;
cout << map[4] << endl;
cout << map[5] << endl;
}
unordered map
访问前:
访问后:
测试代码:
#include<unordered_map>
#include<map>
#include<iostream>
using namespace std;
int main() {
unordered_map<int,int> map;
map[1] = 2;
map[2] = 4;
map[3] = 6;
cout << map[4] << endl;
cout << map[5] << endl;
}
分析
对于map和unordered_map,当我们采用下标运算符访问不存在的key值时,会先插入一个value(调用默认构造函数),然后返回。
这样就会对原有变量造成破坏。
如果我们不想拥有这种访问map或unordered_map导致的副作用,我们可以使用find操作,该操作不会对原有变量造成破坏。