我正在编写一个数值模拟程序,使用 std::map 存储一些键值对。该地图用于存储模拟过程中演变的状态。键的类型是整数,对应于键的值表示相同键的副本数,即std::map。对于模拟的每一步,我都需要计算同一个键有多少个值,所以我将通过以下代码进行检查
if (map[key]>0) {do something here with the number of copies}
但是,我很快发现这段代码不起作用,因为即使映射中没有这样的键,每当您调用 map[key] 时,它都会为该键生成一个占位符并将值设置为零;因此,我总是用 std::map.size() 多算键的总数。我稍后将代码更改如下以搜索密钥
if (map.find(key)!=map.end()) {...}
那么这是检查地图是否存在密钥的唯一且最快的方法吗?我将运行模拟数亿次,它会经常调用上面的代码来检查密钥。改用 map.find() 会不会太慢?谢谢。