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


C++ find_if()用法及代碼示例


C++ 算法 find_if() 函數返回範圍中 pred 值為真的第一個元素的值,否則給出範圍的最後一個元素。

用法

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

參數

first:它指定範圍的第一個元素。

last:它指定範圍的最後一個元素。

pred:它通常是一個一元函數,檢查範圍值以返回布爾答案。

返回值

該函數返回一個迭代器,指向 pred 值為 true 的範圍的第一個元素。如果沒有找到這樣的元素,則該函數返回最後一個元素。

例子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' 值不匹配為止。

數據競爭

函數訪問指定範圍內的所有對象或其中一些對象。

異常

如果任何參數拋出異常,該函數將拋出異常。






相關用法


注:本文由純淨天空篩選整理自 C++ Algorithm Function find_if()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。