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가 리턴한 값들의 조합입니다:
이것은 반복자 i와 j 쌍을 리턴합니다. 여기서 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 < *k가 false인 [first, last)에서 가장 먼 반복자입니다.
[i, j)의 모든 반복자 k에 대하여 value < *k 또는 *k < value는 true가 아닙니다.
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가 아닙니다.
참고사항
알고리즘