1. find
template <class InputIt, class T>
InputIt find(InputIt first, InputIt last, const T& value)
위처럼 생긴 함수다. 해당 함수는 단순무식하게 first 이터레이터부터 last 이터레이터까지를 순회하며 value에 해당하는 값을 발견하면 해당 value의 iterator를 리턴한다. 만약 발견하지 못했다면 last에 해당하는 iterator를 반환한다.
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
find(vec.begin(), vec.end(), 3); // 3을 가리키는 iterator return
find(vec.begin(), vec.end(), 3); // last에 해당하는 iterator vec.end() return.
내부적으로 비교에 == 연산자를 활용한다.
2. find_if
find_if는 find처럼 앞에서부터 탐색하고, value 대신 조건에 사용할 함수 객체/함수 포인터를 파라미터로 받는다.
find_if(vec.begin(), vec.end(),
[](int num) { return num > 2 }; // 이러면 2보다 높은 수 하나를 찾아서 리턴한다.
3. any_of
any_of는 iterator 앞에서부터 뒤까지 쭉 탐색하면서 조건에 맞는 원소가 하나 이상 발견될 경우 true를 리턴하는 함수다.
any_of(vec.begin(), vec.end(), [](int i) { return i % 2 == 0; });
// 짝수인 수가 하나라도 발견되면 true 리턴
3. all_of
all_of는 iterator 앞에서부터 뒤까지 쭉 탐색하면서 모든 원소가 조건에 맞는 경우 true를 리턴한다.
all_of(vec.begin(), vec.end(), [](int i) { return i % 2 == 1; }
// 모든 원소가 홀수면 true 리턴
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 11 / Rvalue 참조 (0) | 2023.02.15 |
---|---|
C++ 문법 / 예외 (0) | 2023.02.15 |
STL 알고리즘 / transform 함수 (0) | 2023.02.14 |
STL 알고리즘 - 원소 제거(remove, remove_if) (0) | 2023.02.14 |
STL 알고리즘 - 정렬(sort, stable_sort, partial_sort) (0) | 2023.02.14 |
댓글