当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ find_if_not()用法及代码示例


C++ 算法 find_if_not()function 返回范围中 pred 值为假的第一个元素的值,否则给出范围的最后一个元素。

用法

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

参数

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

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

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

返回值

该函数返回一个迭代器,指向 pred 值为 false 的范围的第一个元素。如果没有找到这样的元素,则该函数返回最后一个元素。

例子1

#include<iostream>
#include<algorithm>
#include<array>
int main()
{
	std::array<int,6> a={6,7,8,9,10};
	std::array<int,6>::iterator ti=std::find_if_not (a.begin(), a.end(), [](int k){return k%2;} );
	std::cout<<"In the range given the very first even value is "<<*ti<<"\n";
	return 0;
}

输出:

In the range given the very first even value is 6

例子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";
	std::vector<int>::iterator tie;
	tie=std::find_if_not(newvector.begin(), newvector.end(), isEven);
	std::cout<<"Out of the given elements, first odd element is "<<*tie<<"\n";
	return 0;

}

输出:

Out of the given elements, first odd element is 20
Out of the given elements, first odd element is 35

复杂度

该函数以线性方式移动,从第一个元素开始向最后一个元素移动。检查 'pred' 的列表值的每个元素。搜索继续进行,直到遇到 'pred' 值不匹配为止。

数据竞争

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

异常

如果任何参数抛出异常,该函数将抛出异常。






相关用法


注:本文由纯净天空筛选整理自 C++ Algorithm Function find_if_not()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。