C++ find和find_if

#include <iostream>
#include <algorithm>
#include <array>
#include <vector>
#include <functional>

using namespace std;

bool f(int i){
	return i>15;
}
bool f2(int i,int t){
	return i>t;
}
int main(){
	array<int,8> test = {3,5,7,11,13,17,19,23};
	
	array<int,8>::iterator it;

	it=find(test.begin(),test.end(),11);

	it=find_if(test.begin(),test.end(),f);//找到第一个大于15的数

	it=find_if(test.begin(),test.end(),bind2nd(ptr_fun(f2),15));//找到第一个大于15的数

	it=find_if(test.begin(),test.end(),bind2nd(greater<int>(),15));//利用函数模版
	it=find_if(test.begin(),test.end(),bind2nd(equal_to<int>(),11));

	cout<<*it;

	return 0;
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++中,`std::find_if` 是一个算法函数,用于在给定范围内查找满足指定条件的元素。该函数需要三个参数:范围的起始迭代器、范围的结束迭代器和一个谓词(条件)函数。 以下是 `std::find_if` 的函数签名: ```cpp template<class InputIt, class UnaryPredicate> InputIt find_if(InputIt first, InputIt last, UnaryPredicate p); ``` 其中: - `InputIt` 是迭代器类型,表示范围的起始和结束位置。 - `UnaryPredicate` 是一个可调用对象,用于确定元素是否满足条件。它接受一个参数并返回一个 `bool` 类型的结果。 以下是一个使用 `std::find_if` 函数的示例代码,演示如何查找一个数组中第一个大于 5 的元素: ```cpp #include <iostream> #include <vector> #include <algorithm> bool isGreaterThan5(int num) { return num > 5; } int main() { std::vector<int> numbers = {2, 4, 6, 8, 10}; auto it = std::find_if(numbers.begin(), numbers.end(), isGreaterThan5); if (it != numbers.end()) { std::cout << "First element greater than 5: " << *it << std::endl; } else { std::cout << "No element greater than 5 found." << std::endl; } return 0; } ``` 输出结果为: ``` First element greater than 5: 6 ``` 在这个示例中,我们定义了一个 `isGreaterThan5` 函数作为谓词,用于确定元素是否大于 5。然后,我们使用 `std::find_if` 函数在 `numbers` 向量中查找第一个满足条件的元素,并将结果存储在迭代器 `it` 中。最后,我们输出找到的元素(如果存在)或相应的提示信息。 你可以根据自己的需求编写不同的谓词函数来满足不同的查找条件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值