unique
unique (연속 중복 제거)
범위에서 연속으로 반복되는 중복 원소를 제거하는 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
unique는 [first, last)에서 연속적으로 반복되는 원소를 제거해, 살아남은 요소를 앞으로 당겨요.
template< class ForwardIt >
ForwardIt unique( ForwardIt first, ForwardIt last ); // (1)
비교기 버전도 있어요.
template< class ForwardIt, class BinaryPred >
ForwardIt unique( ForwardIt first, ForwardIt last, BinaryPred p ); // (2)
- 반환 값: 새 유효 구간의 끝 반복자. 뒤쪽엔 값이 불확정인 요소가 남아요.
- 실제 크기 축소는 컨테이너
erase로 해야 해요(unique-erase 관용구).
std::vector<int> v{1, 1, 2, 3, 3, 3, 4, 1};
auto it = std::unique(v.begin(), v.end());
v.erase(it, v.end());
// v == {1,2,3,4,1} (상대 연속 중복만 제거)
정렬 후 쓰면 전체 중복 제거가 되는 "연속 중복 제거" 함수예요.