假设我有一个 unordered_set<int> S
我想检查它是否包含某个 int x
.
有没有办法让我写类似 if(S.contains(x)){ /* code */ }
的东西?就像if(S.find(x) != S.end()){ /* code */ }
?
它可以是一个宏或任何东西,但我只是觉得写一个像这样的简单查找方法很丑而且不必要地长。
最佳答案
不是使用 std::unordered_set
的 find()
成员函数来确定给定键 x
是否存在,如下所示:
if (S.find(x) != S.end()) { /* code */ }
您可以简单地使用 count()
成员函数:
if (S.count(x)) { /* code */ }
std::unordered_set
不允许重复,因此 count()
将返回 0
或 1
.
unordered_set::count()
成员函数的效率不应低于 unordered_set::find()
,因为遍历元素以找出计数一旦找到一个请求的 key 就可以停止,因为不能有重复项。
关于c++ - 替代 find() 以确定 unordered_set 是否包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796118/