为什么使用`std :: map :: find`检查地图是否具有键?

问题描述 投票:0回答:1

我最近发现(不是通过研究发现的,所以如果这是错误的,请告诉我,我会纠正这一点),以下方法可以工作:

std::map<T*, U*> map;
std::cout << map[key_that_is_not_in_map] << std::endl;
// OUTPUT:
// 0

但是很多人建议使用std::map::find(key_.....) != std::map::end()

关于后者,是否有使其更安全的东西,或者第一个仅适用于指针键和值?

c++ dictionary find stdmap c++-standard-library
1个回答
2
投票

关于后者,是否有一些使其更安全,或者 首先只适用于指针键和值吗?

,如果不存在键,则std::map::operator[]执行插入。而std::map::find则没有。

来自cppreference.com std::map::find

返回对映射到等价于键的值的引用 密钥,如果尚不存在该密钥,则执行插入操作

© www.soinside.com 2019 - 2024. All rights reserved.