InplaceMerge
2개의 연속 정렬된 범위의 요소들을 단일 정렬된 범위로 결합합니다.
여기서 순서 기준은 이항 술어(binary predicate)로 지정될 수 있습니다.
template <class Bi>
void InplaceMerge (
Bi first,
Bi mid,
Bi last
);
template <class Bi, class BinPred>
void InplaceMerge (
Bi first,
Bi mid,
Bi last,
BinPred pred
);
Template 파라미터
- Bi
-
양방향 반복자입니다.
- BinPred
-
이항 술어(Binary predicate)입니다.
파라미터
- first
-
단일 범위로 결합되고 정렬될 2개의 연속적인 정렬된 범위들 중 1번째 범위의 1번째 요소의 위치를 설명하는 양방향 반복자입니다.
- mid
-
단일 범위로 결합되고 정렬될 2개의 연속적인 정렬된 범위들 중 2번째 범위의 1번째 요소의 위치를 설명하는 양방향 반복자입니다.
- last
-
단일 범위로 결합되고 정렬될 2개의 연속적인 정렬된 범위들 중 2번째 범위의 마지막 직전 요소의 위치를 설명하는 양방향 반복자입니다.
- pred
-
어떤 요소가 다른 요소보다 크다는 의미를 정의하는 사용자 정의 술어 함수 객체입니다.
이항 술어(binary predicate)는 2개의 인자를 취하며, 1번째 요소가 2번째 요소보다 작을 때 true를, 그 외에는 false를 리턴합니다.
설명
InplaceMerge는 2개의 연속적인 정렬된 범위 [first, mid)와 [mid, last)를 단일 정렬된 범위 [first, last)로 결합합니다.
즉, 각각 오름차순으로 두 조각으로 구성된 범위 [first, last)로 시작하여, 전체 범위가 오름차순으로 되도록 재배치합니다.
InplaceMerge는 안정적입니다. 이것은 각 입력 범위 안에 있는 요소들의 상대적인 순서가 보존되고, 두 입력 범위들 안의 동일한 요소들에 대하여 1번째 범위의 요소가 2번째 범위의 요소보다 앞선다는 것을 의미합니다.
InplaceMerge의 2가지 버전은 요소들을 비교하는 방법에 따라 다릅니다.
1번쨰 버전은 operator<를 사용합니다.
즉, 입력 범위와 출력 범위는 i가 j보다 앞서고 *j < *i가 false인 반복자 i와 j의 모든 쌍에 대한 조건을 만족합니다.
2번째 버전은 술어 pred를 사용합니다.
즉, 입력 범위와 출력 범위는 i가 j보다 앞서고 pred(*j, *i)가 false인 반복자 i와 j의 모든 쌍에 대한 조건을 만족합니다.
참고사항
알고리즘