當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。