find(iter1,iter2,value)和find(iter1,iter2,op)的特点
1:前者返回指向区间[iter1,iter2)中第一个元素值为value位置的迭代器,如果没有搜寻成功,返回iter2迭代器,通过iter2为逾尾迭代器,注意不要解引它。
2:后者返回区间[iter1,iter2)中第一个满足op(elem)元素的位置迭代器,如果没有搜寻成功,返回iter2迭代器,通过iter2为逾尾迭代器,注意不要解引它。
3:注意op在函数调用时不应该改动自身状态,也不应该改动传递进来的参数
4:关联式容器提供了一个等效的成员函数find(),拥有对数复杂度
5:如果序列已序,我们应该使用lower_bound(),upper_bound(),equal_range()或者binary_search算法来获得更高的性能
6:迭代器类型输入迭代器
#include<iostream>
#include<vector>
#include<functional>
using namespace std;
int main()
{
vector<int>c1 = { 1,2,3,99,4,0,5,6,7,8,9 };
auto it = find(c1.begin(), c1.end()-1, 5);
if (it != c1.end())
cout << *it << endl;
else
cout << "未发现" << endl;
it = find_if(c1.begin(), c1.end() - 1,
[](int i)->bool { return i > 98; });
if (it != c1.end())
cout << *it << endl;
else
cout << "未发现" << endl;
}