find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的。
查找成功返回一个指向指定元素的迭代器,即元素在容器中的下标,查找失败返回end迭代器。
头文件
#include <algorithm>
函数实现
template<class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& val) { while (first!=last) { if (*first==val) return first; ++first; } return last; }
例1(vector)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() { vector<string> m; m.push_back("hello"); m.push_back("hello2"); m.push_back("hello3"); if (find(m.begin(), m.end(), "hello") == m.end()) cout << "no" << endl; else cout << "yes" << endl; }
例2(set)
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std; int main() { set<string> m; m.insert("hello"); m.insert("hello2"); m.insert("hello3"); if (find(m.begin(), m.end(), "hello") == m.end()) cout << "no" << endl; else cout << "yes" << endl; }
注1:set自身有个find函数,举例如下:
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std; int main() { set<string> m; m.insert("hello"); m.insert("hello2"); m.insert("hello3"); if (find(m.begin(), m.end(), "hello") == m.end()) cout << "no" << endl; else cout << "yes" << endl; }
注2:string自身有个find函数,没有找到返回-1,举例如下:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std; int main() { string s = "helllo"; if (s.find("e") != -1) //yes cout << "yes" << endl; else cout << "no" << endl; if (s.find("z") != -1) //no cout << "yes" << endl; else cout << "no" << endl; }