C++系列-STL中find相关的算法


秋词二首
刘禹锡刘禹锡〔唐代〕

自古逢秋悲寂寥,我言秋日胜春朝。
晴空一鹤排云上,便引诗情到碧霄


💢find相关的算法

Column 1 Column 2
find(beg, end, val) 利用==运算符,对[begin, end)的元素与val进行比较,当匹配时结束搜索,返回该元素的迭代器
find_if(beg, end, pred) 使用谓词代替find中的==操作符,执行find
find_first_of(beg1, end1, beg2, end2) 在[beg1, end1)范围内查找[beg2, end2)中任意一个元素的第一次出现,返回该元素[beg1, end1)中的迭代器
find_first_of(beg1, end1, beg2, end2, pred) 使用谓词代替==操作符,执行find_first_of
find_end(beg1, end1, beg2, end2) 在[beg1, end1)范围内查找[beg2, end2)这一串元素的最后一次出现,返回序列匹配到的在第一个序列中的迭代器
find_end(beg1, end1, beg2, end2, pred) 使用谓词代替==执行执行find_end, 返回值同find_end
adjacent_find(beg, end) 在[beg, end)范围内查找相邻相同的元素,找到则返回第一个元素的迭代器,否则返回end迭代器
adjacent_find(beg, end, pred) 使用谓词代替==,找到则返回第一个元素的迭代器,否则返回end迭代器

💢💢find,find_if举例

👉 👉 👉find和find_if只从头找第一个,找到第一个满足条件的就返回。
find(vec1.begin(), vec1.end(), 3),从vec1中找==3的元素,返回其对应的迭代器。
find_if(vec3.begin(), vec3.end(), [](int val) -> bool {return val > 10;}),从vec3中满足后面的谓词的元素,即元素值大于10,返回器对应的迭代器。

code:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

template<class T>
class MyPrint
{
   
public:
	void operator()(T& val)
	{
   
		cout << val << " ";
	}
};

void test01()
{
   
	// find举例
	vector<int> vec1{
   1, 2, 3, 4, 5, 3, 3};
	// find(beg, end, val) find等于3
	vector<int>::iterator it = find(vec1.begin(), vec1.end(), 3);
	if (it != vec1.end())
	{
   
		cout << "*it:" << *it << endl;
		cout << "[it:vec1.end())中的元素: " << endl;
		for_each(it, vec1.end(), MyPrint<int>());
		cout << endl << endl;
	}
	else
	{
   
		cout << "找不到" << endl << endl;
	}
}

void test02()
{
   
	// find_if举例
	vector<int> vec3{
   1, 3, 10, 11, 12, 3};
	// find_if(beg, end, pred),一元谓词判断是否大于10
	vector<int>::iterator it = find_if(vec3.begin(), vec3.end(), [](int val) -> bool {
   return val > 10;});
	if (it != vec3.end())
	{
   
		cout << "*it:" << *it << endl;
		cout << "[it:vec3.end())中的元素: " << endl;
		for_e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值