查找对象算法

简单查找算法

简单查找算法(要求输入迭代器,递增只读迭代器)描述
find(beg, end, val);find返回一个迭代器,指向输入序列中第一个等于val的元素,未找到返回迭代器end
find_if(beg,end,unaryPred)find_if返回一个迭代器,指向第一个满足unaryPred的元素,未找到返回迭代器end
find_if_not(beg,end,unaryPred)find_if_not返回一个迭代器,指向第一个令unaryPred为false的袁术 ,未找到返回迭代器end
count(beg,end,val)返回一个计数器,指出val出现了多少次
count_if(beg,end,unaryPred)返回一个计数器,统计有多少元素满足unaryPred
all_of(beg,end,unaryPred)返回一个bool值,分别指出unaryPred是否所有元素都成功,unaryPred为空返回true
any_of(beg,end,unaryPred)返回一个bool值,分别指出unaryPred任意一个元素成功,unaryPred为空返回false
none_of(beg,end,unaryPred)返回一个bool值,分别指出unaryPred是否所有元素都不成功 ,unaryPred为空返回true
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
// 客户端 示例代码
int main()
{
	vector<int> v1{ 1,2,4,6,9,2,2 };
	auto elementIter = find(v1.begin(), v1.end(), 3);//返回v1.end()
	bool iterEqual = elementIter == v1.end();//为true
	elementIter = find(v1.begin(), v1.end(), 2);//返回v1中第一个元素2对应的迭代器

	function<bool(int)> unaryPred = [](int n) {return n > 9; };
	elementIter = find_if(v1.begin(), v1.end(), unaryPred);//返回v1.end()
	elementIter = find_if_not(v1.begin(), v1.end(), unaryPred);//返回v1.begin()

	unaryPred = [](int n) {return n > 6; };
	elementIter = find_if(v1.begin(), v1.end(), unaryPred);//返回v1中元素9对应的迭代器

	auto valCount = count(v1.begin(), v1.end(), 2);//valCount为3
	valCount = count_if(v1.begin(), v1.end(), unaryPred);//valCount为1

	bool isSuccess = all_of(v1.begin(), v1.end(), unaryPred);//为false
	isSuccess = any_of(v1.begin(), v1.end(), unaryPred);//为true

	unaryPred= [](int n) {return n > 0; };
	isSuccess = all_of(v1.begin(), v1.end(), unaryPred);//为true
	isSuccess =	none_of(v1.begin(), v1.end(), unaryPred);//为false
	return 0;
}

查找重复值算法

查找重复值算法(前向迭代器(递增读写迭代器))描述
search(beg1,end1,beg2,end2)返回第二个前向迭代器在第一个前向迭代器中第一次出现的位置,如果未找到,发挥end1。
search(beg1,end1,beg2,end2,binaryPred)返回第二个前向迭代器在第一个前向迭代器中第一次出现的位置,如果未找到,发挥end1。
find_first_of(beg1,end1,beg2,end2) find_first_of(beg1,end1,beg2,end2,binaryPred)返回一个迭代器,指向第二个输入范围中任意元素在第一个范围中首次出现的位置,未找到,返回end1.第一个迭代器为输入迭代器,第二个为前向迭代器
find_end(beg1,end1,beg2,end2) find_end(beg1,end1,beg2,end2,binaryPred)与serach类型返回最后一次出现的位置,如果第二个迭代器范围为空或者未找到,返回end2
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
	vector<int> v1{ 1,2,4,6,9,2,2 };
	vector<int> v2{ 2,2 };
	
	auto iter1 = search(v1.begin(), v1.end(), v2.begin(), v2.end());//倒数第二个元素2的迭代器
	auto length = v1.end() - iter1;//为2

	iter1 = search(v1.begin(), v1.end(), v2.begin(),v2.end(), [](int n1, int n2) { return n1 > n2; });//返回第三个元素4指向的迭代器
	length = v1.end() - iter1;//5


	iter1 = find_first_of(v1.begin(), v1.end(), v2.begin(), v2.end());//返回第二个元素2的迭代器
	length = v1.end() - iter1;//6

	iter1 = find_first_of(v1.begin(), v1.end(), v2.begin(), v2.end(), [](int n1, int n2) { return n1 < n2; });//返回第一个元素1的迭代器
	length = v1.end() - iter1;//7

	vector<int> v3{ 1,2,2,4,6,9,2,2 };
	iter1 = find_end(v1.begin(), v1.end(), v2.begin(), v2.end(), [](int n1, int n2) { return n1 < n2; });//返回end1
	length = v1.end() - iter1;//0

	iter1 = find_end(v1.begin(), v1.end(), v2.begin(), v2.end());//倒数第二个元素2的迭代器
	length = v1.end() - iter1;//2

	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值