FindEnd
어떤 범위에서 지정된 시퀀스와 동일하거나 이항 술어가 지정한 의미에서 동일한 마지막 하위 시퀀스를 검색합니다.
template <class For1, class For2, class BinPred>
For1 FindEnd (
For1 first1,
For1 last1,
For2 first2,
For2 last2,
BinPred pred
);
template <class For1, class For2>
For1 FindEnd (
For1 first1,
For1 last1,
For2 first2,
For2 last2
);
Template 파라미터
- For1
-
순방향 반복자입니다.
- For2
-
순방향 반복자입니다.
- BinPred
-
이항 술어(Binary predicate)입니다.
파라미터
- first1
-
검색할 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
- last1
-
검색할 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
- first2
-
검색할 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
- last2
-
검색할 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
- pred
-
두 요소를 등가로 취하는 경우 만족할 조건을 정의하는 사용자 정의 술어 함수 객체입니다.
이항 술어는 2개의 인자를 취하며 만족할 때 true를, 만족하지 않을 때 false를 리턴합니다.
리턴 값
지정된 시퀀스와 일치하거나 이항 술어가 지정한 의미에서 동일한 마지막 하위 시퀀스의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
설명
FindEnd는 이름을 잘못 정했습니다:
이것은 Find보다는 Search에 훨씬 더 비슷합니다. 그래서 더 정확한 이름은 SearchEnd일 것입니다.
Search처럼, FindEnd는 범위 [first1, last1) 안에서 [first2, last2)와 동일한 하위 시퀀스를 찾으려고 시도합니다.
차이점이라면 Search는 처음 하위 시퀀스를 찾는 반면, FindEnd는 마지막 하위 시퀀스를 찾는다는 것입니다.
FindEnd는 하위 시퀀스의 시작을 가리키는 반복자를 리턴합니다;
만약 그러한 하위 시퀀스가 존재하지 않는다면 last1를 리턴합니다.
FindEnd의 두 버전은 두 요소들이 동일한지 여부를 어떻게 결정하는지에 따라 차이가 있습니다:
1번째 버전은 operator==를 사용하고, 2번째 버전은 사용자가 제공한 술어 pred를 사용합니다.
FindEnd의 1번째 버전은 범위 [first2, last2)의 모든 반복자 j에 대하여 *(i + (j - first2)) == *j인
범위 [first1, last1 - (last2 - first2))의 마지막 반복자 i를 리턴합니다.
FindEnd의 2번째 버전은 범위 [first2, last2)의 모든 반복자 j에 대하여 pred(*(i + (j - first2)), *j)가 true인
범위 [first1, last1 - (last2 - first2))의 마지막 반복자 i를 리턴합니다.
이러한 조건들은 단순히 i로 시작하는 하위 범위의 모든 요소가 [first2, last2)의 해당 요소와 동일해야 함을 의미합니다.
참고사항
알고리즘