Graphisoft®

GSRootVersion: 1.0

Search

주어진 시퀀스 안의 요소들과 비교하여 대상 범위 안에서 요소들과 동일하거나 이항 술어로 지정된 의미에서 동일한 요소들과 동일한 시퀀스가 처음 발견되는 것을 검색합니다.

template <class For1, class For2>
For1 Search (
    For1                first1,
    For1                last1,
    For2                first2,
    For2                last2
);
template <class For1, class For2, class BinPred>
For1 Search (
    For1                first1,
    For1                last1,
    For2                first2,
    For2                last2,
    BinPred             pred
);

Template 파라미터

For1
순방향 반복자입니다.
For2
순방향 반복자입니다.
BinPred
이항 술어(Binary predicate)입니다.

파라미터

first1
검색될 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
last1
검색될 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
first2
일치시킬 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
last2
일치시킬 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
pred
두 요소가 동등할 경우 충족되는 조건을 정의하는 사용자 정의 술어 함수 객체입니다. 이항 술어(binary predicate)는 2개의 인자를 취하며 만족할 때에는 true를, 만족하지 않을 때에는 false를 리턴합니다.

리턴 값

지정된 시퀀스와 일치하거나 이항 술어로 지정된 의미와 같은 1번째 시퀀스의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.

설명

Search는 요소별로 비교할 때 [first2, last2)와 동일한 범위 [first1, last1) 내의 하위 시퀀스를 검색합니다. 이것은 그 하위 시퀀스의 시작을 가리키는 반복자를 리턴합니다. 만약 그러한 하위 시퀀스가 존재하지 않으면 last1을 리턴합니다. Search의 2가지 버전들은 두 요소들이 동일한지 여부를 결정하는 방법에 따라 다릅니다. 1번째 버전은 operator==를 사용하고, 2번째 버전은 사용자가 제공한 술어 pred를 사용합니다. Search의 1번째 버전은 범위 [first2, last2)의 모든 반복자 j에 대하여 *(i + (j - first2)) == *j인 범위 [first1, last1 - (last2 - first2))의 1번째 반복자 i를 리턴합니다. Search의 2번째 버전은 범위 [first2, last2)의 모든 반복자 j에 대하여 pred(*(i + (j - first2)), *j)true인 범위 [first1, last1 - (last2 - first2))의 1번째 반복자 i를 리턴합니다. 이러한 조건들은 단순히 i로 시작하는 하위 범위의 모든 요소가 [first2, last2)의 해당 요소와 동일해야 한다는 것을 의미합니다.

참고사항

알고리즘