本文内容来自C++Plus,本文只是本人的总结和翻译而已。我自是C++的搬运工。
Find_if算法,也是一个在指定范围内寻找相对应元素的算法。
当在 [first,end)区间里面找到了第一个按指定的条件查找的对象,就返回Ture,如果没有找到的话,就返回Last。
template<class InputIterator, class UnaryPredicate>
InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred)
{
while (first!=last) {
if (pred(*first)) return first;
++first;
}
return last;
}
简单的说下Find_if()的用法,这个算法要使用的话,必须要写一个Bool类型的函数,这个bool类型的函数里面需要写入的是查找的判断条件。会拿着区间的First向后迭代,并且将每个元素值丢进这个Bool类型的函数里面去执行,如果满足条件的话就返回这个元素。如果迭代完成了,都没有找到符合条件的,就返回范围值的末尾Last。
下面是测试代码:一看就明白。
// find_if example
#include <iostream> // std::cout
#include <algorithm> // std::find_if
#include <vector> // std::vector
bool IsOdd (int i) {
return ((i%2)==1);//返回用1表示真。
}
int main () {
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(40);
myvector.push_back(55);
std::vector<int>::iterator it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
std::cout << "The first odd value is " << *it << '\n';
return 0;
}
需要注意的是这里的Bool等于真的时候,就返回
Frist。