C++ unordered_set::find() 函数



C++ 的std::unordered_set::find()函数用于在容器中查找键值与键k等效的元素,如果找到则返回迭代器,否则返回指向unordered_set::end()的迭代器。

unordered_set是一个关联容器,包含一组类型为key的唯一对象。unordered_set中的每个操作(如插入、搜索和删除)都具有常数时间复杂度。

语法

以下是std::unordered_set::find()函数的语法。

iterator find ( const key_type& k );
const_iterator find ( const key_type& k ) const;

参数

  • k − 表示要搜索的键。

返回值

如果找到指定的值,则返回指向该元素的迭代器;否则,如果在容器中找不到,则返回unordered_set::end。

示例 1

让我们来看下面的例子,我们将演示unordered_set::find()函数的使用。

#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;

int main () {
   unordered_set<string> myset = { "sai","ram","krishna" };
   //searching a key "ram"
   unordered_set<string>::const_iterator got = myset.find ("ram");
   if ( got == myset.end() )
      cout << "not found in myset";
   else
      cout << *got << " is in myset";
   cout << endl;
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

ram is in myset

示例 2

考虑下面的例子,我们将检查指定的键是否存在。

#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;

int main () {
   unordered_set<int> myset = { 10, 100, 1000, 10000 };
   
   if ( myset.find(100) != myset.end() )
      cout<< "100 is available in unordered set! "<<endl;
   if ( myset.find(1000) != myset.end() )
      cout<< "1000 is available in unordered set! "<<endl;
   else
      cout<< "specified key is not available in unordered set! "<<endl;
      
   return 0;
}

输出

以下是上述代码的输出:

100 is available in unordered set! 
1000 is available in unordered set! 

示例 3

在下面的例子中,我们将删除找到的元素并显示剩余的元素。

#include <iostream>
#include <unordered_set>
using namespace std;
 
int main (){
   unordered_set<int> myUset{50, 500, 10, 100, 200};
   unordered_set<int>::iterator it;

   it = myUset.find(50);
   myUset.erase(it);
   myUset.erase(myUset.find(10));

   cout<<"myUset contains: ";
   for(it = myUset.begin(); it != myUset.end(); ++it)
      cout<<*it<<" ";

   return 0;
}

输出

上述代码的输出如下:

myUset contains: 200 100 500 
广告