C++STL算法篇之find、find_if 搜寻算法

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
#include
#include
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;
}

**op推荐采用lambdas表达式:lambdas的使用方法
**

你可能感兴趣的:(C++学习笔记)