c++ - 检查 std::map 中是否存在 - 计数与查找

标签 c++ dictionary stl stdmap

因此,似乎有两种普遍可接受的方法来确定 std::map 中是否存在 key :

map.find(key) != map.end()
map.count(key) > 0

一种比另一种更有效吗?具体来说,count() 的概念可以解释为意味着该方法将遍历每个键,计算总计数(并且由于 std::map 的定义>,总计数将始终为 0 或 1)。 count() 是否保证在匹配后“停止”,以与 find() 相同的复杂度运行?

最佳答案

由于 map 最多只能有一个键,count 将在找到一个元素后基本上停止。但是,考虑到更通用的容器,例如 multimap 和多集,如果您只关心具有此键的 some 元素是否存在,find 会更好,因为它真的可以停止一次已找到第一个匹配元素。

一般来说,countfind 都将使用容器特定的查找方法(树遍历或哈希表查找),这些方法总是相当有效的。只是 count 必须继续迭代直到相等范围的末尾,而 find 则不需要。此外,您的代码应该记录意图,因此如果您想查找某些内容,请使用 find

关于c++ - 检查 std::map 中是否存在 - 计数与查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490357/

相关文章:

python - 如何索引CSV文件以高效搜索?

python - 具有公共(public)子键的新字典

c++ - 如果没有找到 map 元素会返回什么?

c++ - 无法删除 unsigned char* 数组

c++ - 在 C++ Eclipse 中未定义对(错误)的引用,但在 Visual Studio 2015 中工作

c++ - gcc 4.9 递归 lambda 返回时的内部编译器错误

Scala 映射和对操作

c++ - 如何使用 g++ 在 C++ 程序中链接节日 TTS 库

c++ - 本地有序集或优先队列的实现?

c++ - std::remove_if 移除的元素到哪里去了?