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