find_first_of() 알고리즘은 두 순차열을 비교하여 모든 원소 중 같은 원소가 하나라도 발견되면 발견된 첫 원소의 반복자를 반환합니다.
[예제] find_first_of() 알고리즘의 예제입니다.
- iter = find_first_of(v1.gegin(), v1.end(), v2.begin(), v2.end()) : 구간[v1.begin(), v1.end()) 순차열에서 구간[v2.begin, v2.end())의 원소 중 같은 원소가 발견되면 첫 원소의 반복자를 반환합니다.
- v1의 순차열에서 v2의 순차열 원소가 첫 번째로 발견되는 위치는 10이므로 10의 반복자를 반환합니다.
[예제] 조건자를 사용한 find_first_of() 알고리즘의 예제입니다.
- 순차열 v1에서 v2의 순차열 원소 50, 30, 10보다 큰 수는 20이 처음이므로 iter는 20원소의 반복자입니다.
만약 v1 : 10 20 30 40 50 이고
v2 : 40 80 20 이라면
iter는 30이 됩니다.
순차열의 모든 원소에 사용자 동작을 적용하려면 일반적으로 for_each() 알고리즘을 사용합니다. for_each() 알고리즘은 원소를 수정하지 않는 알고리즘과 원소를 수정하는 알고리즘 두 분류에 모두 포함됩니다.
[예제] for_each() 알고리즘을 사용하여 모든 원소를 출력하는 예제입니다
c++에는 기본 문법인 for문이 있습니다. for문으로 모든 반복문을 만들 수 있고 실행시킬 수 있습니다. for문으로 불편함 없이 사용 가능하지만 c++ 알고리즘에는 for_each() 알고리즘이 존재합니다.
- for_each() 알고리즘의 장점은 for_each문을 사용하면 코드가 간결해집니다.
- for_each()알고리즘의 단점은 한번 실행하면 끝까지 실행됩니다. 즉, 중간에 중단이 불가능합니다.
if문을 활용한 break도 불가능합니다.
[출력 결과]
10 20 10 20 30 40 10 20 30 40 50 |
- for_each(v.begin(). v.end(), Print) : 구간 [v.begin(), v.end())의 모든 원소에 대해 Print(*p)를 적용합니다. p는 순차열의 반복을 의미합니다.
'C++ STL' 카테고리의 다른 글
19. c++ stl 우선순위 큐 (0) | 2020.06.11 |
---|---|
18. c++ STL [vector 5일차] 2차원 vector (0) | 2020.04.30 |
16. c++ stl find(), find_if(), find_end() - 문제12 (0) | 2020.04.06 |
15. c++ stl equal() (0) | 2020.04.05 |
14. c++ stl count(), count_if() (0) | 2020.04.04 |