C ++ set find()函數(shù)用于查找具有給定值 val 的元素。如果找到元素,則返回指向該元素的迭代器,否則返回指向集合末尾的迭代器,即set :: end()。
iterator find (const value_type& val) const; // C++ 11 之前 const_iterator find (const value_type& val) const; //從 C++ 11開始 iterator find (const value_type& val); //從 C++ 11開始
val:指定要在集合容器中搜索的值。
如果找到元素,則返回指向該元素的迭代器,否則返回指向集合末尾的迭代器,即set :: end()。
大小為對數(shù)。
沒有變化。
容器被訪問(const版本和非const版本)都不能修改容器。
沒有訪問映射的值:同時訪問和修改元素是安全的。
如果引發(fā)異常,則容器中沒有任何更改。
讓我們看一個簡單的示例,查找具有給定鍵值的元素:
#include <iostream>
#include <set>
using namespace std;
int main(void) {
set<int> m = {100,200,300,400};
auto it = m.find(300);
cout << "迭代器指向 " << *it << endl;
return 0;
}輸出:
迭代器指向 300
讓我們看一個簡單的示例來查找元素:
#include <iostream>
#include <set>
using namespace std;
int main(void) {
set<char> m = {'a', 'b', 'c', 'd'};
auto it = m.find('e');
if ( it == m.end() ) {
// 未找到元素
cout<<"未找到元素";
}
else {
// 找到
cout << "迭代器指向 " << *it<< endl;
}
return 0;
}輸出:
未找到元素
在上面的示例中,find()函數(shù)在集合m中查找鍵值e,如果在集合m中找不到鍵值e,則它將返回未找到消息,否則將顯示集合。
讓我們看一個簡單的實例:
#include <iostream>
#include <set>
using namespace std;
int main()
{
char n;
set<char> example = {'a','b','c','d','e'};
cout<<"輸入要搜索的元素: ";
cin>>n;
auto search = example.find(n);
if (search != example.end()) {
cout << n<<" 找到并且值是 " << *search << '\n';
} else {
cout << n<<" 未找到\n";
}
}輸出:
輸入要搜索的元素: b 找到并且值是 b
在上面的示例中,使用find()函數(shù)根據(jù)用戶的給定值查找元素。
讓我們看一個簡單的實例:
#include <iostream>
#include <set>
int main () {
std::set<int> myset;
std::set<int>::iterator it;
for (int i = 1; i <= 10; i++) myset.insert(i*10);
it = myset.find(40);
myset.erase (it);
myset.erase (myset.find(60));
std::cout << "myset包含:";
for (it = myset.begin(); it!=myset.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}輸出:
myset包含: 10 20 30 50 70 80 90 100