Graphisoft®

GSRootVersion: 1.0

Unique

지정된 범위 내에서 서로 인접하는 중복 요소들을 제거합니다.

template <class For>
For Unique (
    For                 first,
    For                 last
);
template <class For, class BinPred>
For Unique (
    For                 first,
    For                 last,
    BinPred             pred
);

Template 파라미터

For
순방향 반복자입니다.
BinPred
이항 술어(Binary predicate)입니다.

파라미터

first
중복 제거를 위해 스캔되는 범위의 1번째 요소의 위치를 설명하는 순방향 반복자입니다.
last
중복 제거를 위해 스캔되는 범위의 마지막 직전 요소의 위치를 설명하는 순방향 반복자입니다.
pred
두 요소를 등가로 취하는 경우 만족할 조건을 정의하는 사용자 정의 술어 함수 객체입니다. 이항 술어(binary predicate)는 2개의 인자를 취하며 만족할 때에는 true를, 만족하지 않을 때에는 false를 리턴합니다.

리턴 값

연속적인 중복을 포함하지 않은 변경된 시퀀스의 새로운 끝을 가리키는 순방향 반복자로서, 제거되지 않은 마지막 직전 요소의 위치를 설명합니다.

설명

중복 요소들의 연속된 그룹이 범위 [first, last)에 나타날 때마다, 알고리즘 Unique는 첫 번째 요소를 제외한 나머지를 제거합니다. 즉, Unique는 중복되는 2개의 연속적인 요소들이 포함되어 있지 않은 범위 [first, new_last)의 연속자 new_last를 리턴합니다. 범위 [new_last, last)의 연속자들은 여전히 디레퍼런스할 수 있지만, 그것들이 가리키는 요소들은 지정되어 있지 않습니다. Unique는 안정적입니다. 이것은 제거되지 않은 요소들의 상대적인 순서가 변경되지 않음을 의미합니다. Unique가 2가지 버전들을 가지고 있는 이유는 중복되는 요소들의 연속적인 그룹이 무엇을 의미하는지에 대한 2가지 서로 다른 정의가 있기 때문입니다. 1번째 버전에서는 단순한 등가를 테스트합니다: 범위 내 모든 반복자 i에 대하여 i == f 또는 *i == *(i - 1)일 경우, 범위 [f, l)의 요소들이 중복합니다. 2번째 버전에서는 임의의 이항 술어 pred를 테스트합니다: 범위 내 모든 반복자 i에 대하여 i == f 또는 pred(*i, *(i - 1))true일 경우, 범위 [f, l)의 요소들이 중복합니다. 이 알고리즘들은 연관 컨테이너에서 사용할 수 없습니다.

참고사항

알고리즘