Graphisoft®

GSRootVersion: 1.0

EqualRange

정렬된 범위의 위치 쌍의 위치를 찾습니다. 1번째는 지정된 요소의 위치보다 작거나 같으며, 2번째는 요소의 위치보다 크다. 여기서 순서의 위치를 설정하는 데 사용되는 등가 또는 순서 개념은 이항 술어(binary predicate)로 지정할 수 있다.

template <class For, class T>
Pair< For, For > EqualRange (
    For                 first,
    For                 last,
    const T &           value
);
template <class For, class T, class BinPred>
Pair< For, For > EqualRange (
    For                 first,
    For                 last,
    const T &           value,
    BinPred             pred
);

Template 파라미터

For
순방향 반복자(Forward iterator)입니다.
T
T 타입 template 파라미터입니다.
BinPred
이항 술어(Binary predicate)입니다.

파라미터

first
검색할 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
last
검색할 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
value
리턴된 쌍의 1번째 구성요소가 설명한 요소의 값과 같아야 하고, 그 쌍의 2번째 구성요소가 설명한 요소의 값보다 작아야 하는 정렬된 범위의 값을 리턴합니다.
pred
왼손 인자가 오른손 인자보다 작을 경우 사용자 정의 술어 함수 객체는 true입니다. 인자들이 같으면 사용자 정의 술어 함수는 false를 리턴해야 합니다.

리턴 값

정렬된 범위에서 두 위치를 설명하는 순방향 반복자 쌍입니다. 쌍의 1번째 구성요소는 지정한 값보다 작거나 같은 값을 가진 요소의 위치를 참조하고 쌍의 2번째 구성요소는 지정한 값보다 큰 값을 가진 요소의 위치를 참조합니다. 등가 또는 순서 개념은 이항 술어(binary predicate)가 지정할 수 있습니다.

대안으로, 순방향 반복자 쌍은 검색된 범위 내에 포함된 하위 범위를 지정하는 것으로 설명될 수 있는데, 여기서 모든 요소들은 사용된 이항 술어에 의해 정의된 의미에서 지정된 값과 동일하다.

설명

EqualRange는 이진 검색의 버전 중 하나입니다: 정렬된 범위 [first, last)에서 요소 value를 검색하려고 시도합니다. EqualRange가 리턴한 값은 본질적으로 LowerBound 그리고 UpperBound가 리턴한 값들의 조합입니다: 이것은 반복자 ij 쌍을 리턴합니다. 여기서 i는 순서를 깨뜨리지 않고 삽입될 수 있는 value의 1번째 위치이며 j는 순서를 깨뜨리지 않고 삽입될 수 있는 value의 마지막 위치입니다. 그 다음에 범위 [i, j)의 모든 요소는 value와 동일하며, [i, j)는 이 프로퍼티를 갖는 [first, last)의 가장 큰 하위 범위입니다. EqualRange의 1번째 버전은 비교를 위해 operator<를 사용하며 술어 pred를 사용합니다. EqualRange의 1번째 버전은 반복자 쌍 [i, j)를 리턴합니다. i[first, i)의 모든 반복자 k에 대하여 *k < value[first, last)에서 가장 먼 반복자입니다. j[first, j)의 모든 반복자 k에 대하여 value < *kfalse[first, last)에서 가장 먼 반복자입니다. [i, j)의 모든 반복자 k에 대하여 value < *k 또는 *k < valuetrue가 아닙니다. EqualRange의 2번째 버전은 반복자 쌍 [i, j)를 리턴합니다. i[first, i)의 모든 반복자 k에 대하여 comp(*k, value)true[first, last)에서 가장 먼 반복자입니다. j[first, j)의 모든 반복자 k에 대하여 pred(value, *k)false[first, last)에서 가장 먼 반복자입니다. [i, j)의 모든 반복자 k에 대하여 pred(value, *k) 또는 pred(*k, value)true가 아닙니다.

참고사항

알고리즘