c++ - 替代 find() 以确定 unordered_set 是否包含键

标签 c++ stl unordered-set

假设我有一个 unordered_set<int> S我想检查它是否包含某个 int x .

有没有办法让我写类似 if(S.contains(x)){ /* code */ } 的东西?就像if(S.find(x) != S.end()){ /* code */ }

它可以是一个宏或任何东西,但我只是觉得写一个像这样的简单查找方法很丑而且不必要地长。

最佳答案

不是使用 std::unordered_setfind() 成员函数来确定给定键 x 是否存在,如下所示:

if (S.find(x) != S.end()) { /* code */ }

您可以简单地使用 count()成员函数:

if (S.count(x)) { /* code */ }

std::unordered_set 不允许重复,因此 count() 将返回 01.


unordered_set::count() 成员函数的效率不应低于 unordered_set::find(),因为遍历元素以找出计数一旦找到一个请求的 key 就可以停止,因为不能有重复项。

关于c++ - 替代 find() 以确定 unordered_set 是否包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796118/

相关文章:

c++ - 为什么 STL 数值算法使用 'op' 而不是 'op=' ?

c++ - 如何释放unordered_set的内存?

c++ - 在迭代过程中是否会访问在std::unordered_set(或unordered_map)中添加的元素?

c++ - 用 sfml 计算 FPS

C++ 标准库可移植性

c++ - 如何使用 ostringstream 在 C++ 中记录十六进制字符串?

c++ - 对 map 容器使用remove_if

c++ - 无法在 std::unordered_set<const char *> 中找到转换为 const char * 的 std::string

c++ - 获取 eigen::selfadjointView<Lower>() 的上三角

c++ - Density of floating point number - 数字的大小