c++ - 在 std::map 计数 vs 中,对存在的C++ 检查

  显示原文与译文双语对照的内容

因此,在 std::map 中,确定某个键是否存在的两种方法似乎是可以接受的:


map.find(key)!= map.end()


map.count(key)> 0



比另一个更有效? 具体地说,count()的概念可以解释为方法将遍历每个键,计算总计数( 由于 std:: map的定义,总计数始终为 0或者 1 ) 。 在匹配后 count() 是否保证"停止",以与 find() 相同的复杂度操作?

时间: 原作者:

因为地图只能有一个键,所以 count 在找到一个元素之后基本上就会停止。 如果你只关心元素是否存在,那么就更好了,因为在找到第一个匹配元素时,它确实会停止,所以 find 会更好地处理这个键。

通常,countfind 都将使用容器特定的查找方法( 树遍历或者哈希表查找),这些方法总是非常有效。 只是 count 必须继续迭代直到相等范围的结束,而 find 并不是。 此外,你的代码应该记录意图,因此如果你想找到一些东西,请使用 find

原作者:
...