本节我们进入查找算法find()函数的学习。find(beg , end , val)函数的功能是在指定区间[beg , end)查找是否有与val值相等的元素,是则返回指向该元素的迭代器,否则返回end()。
对于自定义数据来说,使用find()函数需要类内重载”==“运算符。
下面我们通过find()函数来分别对基本数据类型和自定义数据类型进行指定元素查找:
#include<iostream>
#include<vector>
#include<iterator> //使用迭代器函数进行切割,复习前面知识 next(it,n)
#include<algorithm>//包含算法头文件!
using namespace std;
/*自定义数据*/
struct dotcpp_user
{
bool operator==(const dotcpp_user&u)const
{
return name==u.name&&age==u.age&&grade==u.grade&&is_online==u.is_online;
}
string name;//姓名
int age;//年龄
int grade;//做题个数
bool is_online;//是否在线
};
void test()
{
/*find()函数来分别对基本数据类型和自定义数据类型进行指定元素查找*/
/*基本数据类型*/
vector<int> v1{1,2,3,4,5};//v1存储基本数据类型
if(find(v1.begin(),v1.end(),3)!=v1.end())cout << "找到3了!\n" ;
/*创建复杂对象*/
dotcpp_user u1{"user01",18,100,true};
dotcpp_user u2{"user02",18,200,true};
dotcpp_user u3{"user03",18,300,true};
dotcpp_user u4{"user04",18,400,true};
dotcpp_user u5{"user05",18,500,true};
vector<dotcpp_user> v2{u1,u2,u3,u4,u5} ;//v2存储自定义数据类型
dotcpp_user user03{"user03",18,300,true} ;
if(find(v2.begin(),v2.end(),user03)!=v2.end()) cout << "找到user03这个用户了!\n" ;
}
int main(){
system("title dotcpp.com");
test();
return 0;
}编译结果如下:

我们通过find()分别找到基本数据类型3和自定义数据类型user03,输出结果完全符合指令。
总结:find()函数使用方法很简单,指定一个区间和需要查找的元素,存在查找元素则返回指向该元素的迭代器,否则返回end()。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程