Graphisoft®

GSRootVersion: 1.0

PartialSortCopy

소스 범위의 요소를 지정된 이항 술어보다 작거나 다른 이항 술어에 의해 소스 요소들이 정렬되는 대상 범위로 복사합니다.

template <class In, class Ran>
Ran PartialSortCopy (
    In                  first1,
    In                  last1,
    Ran                 first2,
    Ran                 last2
);
template <class In, class Ran, class BinPred>
Ran PartialSortCopy (
    In                  first1,
    In                  last1,
    Ran                 first2,
    Ran                 last2,
    BinPred             pred
);

Template 파라미터

In
입력 반복자입니다.
Ran
랜덤 접근 반복자입니다.
BinPred
이항 술어(Binary predicate)입니다.

파라미터

first1
소스 범위의 1번째 요소의 위치를 설명하는 입력 반복자입니다.
last1
소스 범위의 마지막 직전 요소의 위치를 설명하는 입력 반복자입니다.
first2
정렬된 목적지 범위의 1번째 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
last2
정렬된 목적지 범위의 마지막 직전 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
pred
두 요소들을 등가로 취하는 경우 만족할 조건을 정의하는 사용자 정의 술어 함수 객체입니다. 이항 술어(binary predicate)를 2개의 인자들을 취하며 만족할 때에는 true를, 만족하지 않을 때에는 false를 리턴합니다.

리턴 값

목적지 범위의 한 요소를 설명하는 랜덤 접근 반복자입니다. 이 요소의 위치는 소스 범위로부터 삽입된 마지막 요소 너머에 있습니다.

설명

PartialSortCopy는 가장 작은 N 요소들을 범위 [first, last)에서 범위 [result_first, result_first + N)로 복사합니다. 여기서 Nlast - firstresult_last - result_first 중 더 작은 것입니다. [result_first, result_first + N)의 요소들은 오름차순이 될 것입니다. PartialSortCopy의 2가지 버전들은 어떤 요소가 다른 요소보다 작다는 것을 정의하는 방법에서 차이가 있습니다. 1번째 버전은 operator<를 사용하여 객체들을 비교하고, 2번째 버전은 술어 pred를 사용하여 객체들을 비교합니다. PartialSortCopy의 1번째 버전에 대한 후조건은 다음과 같습니다. 만약 ij가 범위 [result_first, result_first + N)의 유효한 두 반복자들이며 ij보다 앞설 때 *j < *ifalse가 될 것입니다. 2번째 버전의 해당 후조건은 pred(*j, *i)false가 될 것입니다. 리턴 값은 result_first + N입니다.

참고사항

알고리즘