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<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;
}
原创文章 23 获赞 1 访问量 355

猜你喜欢

转载自blog.csdn.net/weixin_44806268/article/details/105747479
今日推荐