C++ 算法 find_if()函数

C++ 算法 find_if()函数

C++ 算法函数 find_if() 返回范围中第一个满足谓词值为真的元素的值,否则返回范围中的最后一个元素。

语法

template <class InputIterator, class UnaryPredicate>
InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred);

参数

first :它指定了范围中的第一个元素。

last :它指定了范围中的最后一个元素。

pred :通常是一个一元函数,对该范围的值进行检查以返回一个布尔值答案。

返回值

该函数返回范围中第一个使pred值为真的元素的迭代器。如果找不到这样的元素,则函数返回最后一个元素。

示例1

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool isAnOdd(int i)
{   
    return((i%2)==1);
}
int main()
{
    std::vector<int> newvector;
    newvector.push_back(20);
    newvector.push_back(35);
    newvector.push_back(50);
    newvector.push_back(65);
    std::vector<int>::iterator ti = std::find_if(newvector.begin(), newvector.end(),isAnOdd);
    std::cout<<"Out of the given elements, first odd element is "<<*ti<<"\n";
    return 0;
}

输出:

Out of the given elements, first odd element is 35

示例2

#include<iostream>
#include<algorithm>
#include<vector>
bool isEven (int i)
{
    return((i%2)==0);
}
int main()
{
    std::vector<int> newvector {20, 35, 50, 65};
    std::vector<int>::iterator ti;
    ti= std::find_if(newvector.begin(),newvector.end(),isEven);
    std::cout<<"Out of the given elements, first even element is "<<*ti<<"\n";
    return 0;

}

输出:

Out of the given elements, first odd element is 20

复杂度

该函数按线性方式移动,从第一个元素向最后一个元素移动。对于列表的每个元素,会检查’pred’的值。搜索会持续进行,直到遇到’pred’值不匹配的情况。

数据竞争

函数会访问指定范围中的所有对象或其中的一些对象。

异常

如果任何参数引发异常,该函数会引发异常。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程