Dan*_*iel 3 c++ stl unordered-set
假设我有一个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 */ }
Run Code Online (Sandbox Code Playgroud)
您可以简单地使用count()成员函数:
if (S.count(x)) { /* code */ }
Run Code Online (Sandbox Code Playgroud)
Anstd::unordered_set不允许重复,因此count()将返回0或1。
该unordered_set::count()成员函数不应该比低效率的unordered_set::find(),因为以找出请求密钥的计数元素的遍历作为一个被发现的,因为不能有重复可以尽快停止。