天天看點

STL find_if查找算法

find_if() 同 find() 一樣,為在輸入疊代器所定義的範圍内查找單個對象的算法,它可以在前兩個參數指定的範圍内查找可以使第三個參數指定的謂詞傳回 true 的第一個對象。謂詞不能修改傳給它的對象。

find_if() 會傳回一個指向被找到對象的疊代器,如果沒有找到對象,會傳回這個 序列的結束疊代器。

可以按如下方式使用 find_if() 來查找 numbers 中第一個大于 value 的元素:

vector<int> numbers{ 4, 46, 51, 67, 31, 22, 14 };
int value{ 5 };
auto iter = std::find_if(std::begin(numbers), std::end(numbers), [value](int n){return n > value; });
if (iter != std::end(numbers))
	std::cout << *iter << " was found greater than " << value << ".\n";
           

find_if() 的第三個參數是一個 lambda 表達式的謂詞。這個 lambda 表達式以值的方式捕獲 value,并在 lambda 參數大于 value 時傳回 true。這段代碼會找到一個值為 46 的元素。