NthElement
일련의 요소들을 분할하여, 그 앞에 있는 모든 요소들이 그것보다 작거나 같도록 그 범위에 있는 시퀀스의 N번째 요소들을 정확하게 위치시키고, 그 시퀀스에서 그것을 따르는 모든 요소들이 그것보다 크거나 같도록 합니다.
template <class Ran>
void NthElement (
Ran first,
Ran nth,
Ran last
);
template <class Ran, class BinPred>
void NthElement (
Ran first,
Ran nth,
Ran last,
BinPred pred
);
Template 파라미터
- Ran
-
랜덤 접근 반복자입니다.
- BinPred
-
이항 술어(Binary predicate)입니다.
파라미터
- first
-
분할될 범위의 1번째 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
- nth
-
분할 경계 상에 올바로 정렬된 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
- last
-
분할될 범위의 마지막 직전 요소의 위치를 설명하는 랜덤 접근 반복자입니다.
- pred
-
순서 상으로 요소들이 연속적이라는 조건을 만족하는 비교 기준을 정의하는 사용자 정의 술어 함수 객체입니다.
이항 술어(binary predicate)를 2개의 인자들을 취하며 만족할 때에는 true를, 만족하지 않을 때에는 false를 리턴합니다.
설명
NthElement는 요소들의 범위를 부분적으로 정렬한다는 점에서 PartialSort와 비슷합니다:
전체 범위 [first, last)가 정렬되었더라면 반복자 nth가 가리키는 요소가 그 위치에 있을 요소와 동일하도록 범위 [first, last)를 정렬합니다.
추가적으로 범위 [nth, last)에 있는 요소들은 범위 [first, nth)에 있는 요소들보다 작은 것이 하나도 없습니다.
NthElement의 2가지 버전들은 어떤 요소가 다른 요소보다 작다는 것을 정의하는 방법에서 차이가 있습니다.
1번째 버전은 operator<를 사용하여 객체들을 비교하고, 2번째 버전은 술어 pred를 사용하여 객체들을 비교합니다.
NthElement의 1번째 버전의 후조건은 다음과 같습니다.
범위 [first, nth)에서 *nth < *i인 반복자 i가 없으며, 범위 [nth + 1, last)에서 *j < *nth인 반복자 j가 없습니다.
NthElement의 2번째 버전의 후조건은 다음과 같습니다.
범위 [first, nth)에서 pred(*nth, *i)가 true인 반복자 i가 없으며, 범위 [nth + 1, last)에서 pred(*j, *nth)가 true인 반복자 j가 없습니다.
참고사항
알고리즘