需求
cpp 了解 find 相关函数
解决
- find 的语法格式
InputIterator find (InputIterator first, InputIterator last, const T& val);
//find() 函数作用于普通数组 char stl[] ="http://c.biancheng.net/stl/"; //调用 find() 查找第一个字符 'c' char * p = find(stl, stl + strlen(stl), 'c'); //判断是否查找成功 if (p != stl + strlen(stl)) { cout << p << endl; } //find() 函数作用于容器 std::vector<int> myvector{ 10,20,30,40,50 }; std::vector<int>::iterator it; it = find(myvector.begin(), myvector.end(), 30); if (it != myvector.end()) cout << "查找成功:" << *it; else cout << "查找失败";
- find_if 可以指定查找规则。语法:
InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred);
//自定义一元谓词函数 bool mycomp(int i) { return ((i % 2) == 1); } //以函数对象的形式定义一个 find_if() 函数的查找规则 class mycomp2 { public: bool operator()(const int& i) { return ((i % 2) == 1); } }; int main() { vector<int> myvector{ 4,2,3,1,5 }; //调用 find_if() 函数,并以 IsOdd() 一元谓词函数作为查找规则 vector<int>::iterator it = find_if(myvector.begin(), myvector.end(), mycomp2()); cout << "*it = " << *it; return 0; }
- find_if_not 查找第一个不符合的。语法:
InputIterator find_if_not (InputIterator first, InputIterator last, UnaryPredicate pred);
//自定义一元谓词函数 bool mycomp(int i) { return ((i % 2) == 1); } int main() { vector<int> myvector{4,2,3,1,5}; //调用 find_if() 函数,并以 mycomp() 一元谓词函数作为查找规则 vector<int>::iterator it = find_if_not(myvector.begin(), myvector.end(), mycomp); cout << "*it = " << *it; return 0; }