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} (상대 연속 중복만 제거)

정렬 후 쓰면 전체 중복 제거가 되는 "연속 중복 제거" 함수예요.

더 알아보기 (Learn more)

cppreference