std::find_if()
#include <algorithm>
template <class InputIterator, class UnaryPredicate> InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred);
특정 범위 내에서 특정 조건을 만족하는 데이터를 찾는 함수이다.
조건과 일치한다는 것을 pred
에 원소를 인자로 전달하여 호출하였을 때 true
를 반환한다는 의미이다.
Parameters | Description |
---|---|
first | 찾는 범위의 첫번째 iterator |
last | 찾는 범위의 마지막 iteratorlast 가 가리키는 원소는 포함되지 않는다. |
pred | 해당 원소를 인자로 받는 단항 함수로 bool 또는 bool 로 변환될 수 있는 타입을 반환한다.해당 반환 값은 조건 만족을 확인하는 역할을 하며, 전달된 원소는 수정되면 안된다. |
첫번째로 pred
를 만족하는 즉, true
를 반환하는 원소를 가리키는 iterator를 반환한다.
만약 만족하는 원소가 없다면 last
를 반환한다.
#include <algorithm> // std::find_if
#include <iostream> // std::cout
#include <vector> // std::vector
using namespace std;
bool IsOdd(int i) { return ((i % 2) == 1); }
int main() {
vector<int> myvector;
myvector.push_back(10);
myvector.push_back(25);
myvector.push_back(40);
myvector.push_back(55);
vector<int>::iterator it = find_if(myvector.begin(), myvector.end(), IsOdd);
cout << "첫 번째 홀수는 " << *it << '\n';
return 0;
}
첫 번째 홀수는 25