Graphisoft®

GSRootVersion: 1.0

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)의 해당 요소와 동일해야 함을 의미합니다.

참고사항

알고리즘