C++ 模板 map 和 unordered_map 中,访问不存在的key值,对变量的影响以及返回的结果

发布时间:2024年01月10日

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操作,该操作不会对原有变量造成破坏。

文章来源:https://blog.csdn.net/myf_666/article/details/132192002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。