모두의 코드
C++ 레퍼런스 - find_if 함수 (<algorithm>)
작성일 : 2019-02-04
이 글은 30292 번 읽혔습니다.
find_if
<algorithm> 에 정의됨
template <class InputIterator, class UnaryPredicate> InputIterator find_if(InputIterator first, InputIterator last, UnaryPredicate pred);
범위 안에 원소들 중 조건을 만족하는 원소를 찾는다.
범위 안 (first
부터 last
전 까지) 의 원소들 중 조건(pred
)과 일치하는 원소를 가리키는 반복자를 반환합니다. 만일 일치하는 원소가 없다면 last
를 리턴합니다.
조건과 일치한다는 뜻은 pred
에 원소를 인자로 전달하여 호출하였을 때 true
를 반환한다는 의미 입니다.
인자들
first, last
: 원소들의 시작과 끝을 가리키는 반복자들. 이 때 확인하는 범위는[first, last)
로 정의됩니다.first
가 가리키는 원소는 포함되지만last
가 가리키는 원소는 포함되지 않습니다.pred
: 해당 원소를 인자로 받는 단항 함수로bool
혹은bool
로 변환될 수 있는 타입을 리턴한다. 이 리턴값은, 전달된 원소가 조건을 만족하는지 확인하는 역할을 하며, 전달된 원소를 수정하면 안된다.
리턴값
첫 번째로 pred
가 거짓을 반환하지 않는 원소를 가리키는 반복자를 리턴한다. 만일 pred
가 모든 원소에 대해서 거짓을 반환한다면 last
를 리턴한다.
구현 예시
template <class InputIterator, class UnaryPredicate> InputIterator find_if(InputIterator first, InputIterator last, UnaryPredicate pred) { while (first != last) { if (pred(*first)) return first; ++first; } return last; }
실행 예제
// find_if example #include <algorithm> // std::find_if #include <iostream> // std::cout #include <vector> // std::vector bool IsOdd(int i) { return ((i % 2) == 1); } int main() { std::vector<int> myvector; myvector.push_back(10); myvector.push_back(25); myvector.push_back(40); myvector.push_back(55); std::vector<int>::iterator it = std::find_if(myvector.begin(), myvector.end(), IsOdd); std::cout << "첫 번째 홀수는 " << *it << '\n'; return 0; }
실행 결과
실행 결과
첫 번째 홀수는 25
참고 자료
첫
댓글을 달아주세요!
강좌에 관련 없이 궁금한 내용은
여기를 사용해주세요
또는 직접 입력하세요 (댓글 수정시 비밀번호가 필요합니다)
댓글을 불러오는 중입니다..