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 
廣告