C++/알고리즘
[C++]중복값 삭제
이경로
2023. 7. 8. 03:21
{1, 1, 3, 3, 2, 2}이라는 배열이 있다고 가정하자. 해당 배열에서 중복 값을 삭제하고 {1, 3, 2}을 출력하고 싶다.
우선 unique를 사용한다. unique는 시작과 끝 iterator를 인자로 받아 중복되지 않게 값을 앞에서부터 채운 뒤, 뒷부분은 그대로 내버려둔다.

하지만 우리가 원하는 값은 앞의 세 문자 뿐이다. unique의 반환값은 중복되지 않은 요소들의 바로 다음 iterator이다.
위의 배열에서 unique의 반환값은 index 3이다. 따라서 erase함수를 이용해 unique의 반환값 이후의 요소들을 삭제해 주면 중복되지 않은 값들만이 남게 된다.

참고로 erase의 인자가 하나일 경우 해당 요소 딱 하나만, 두 개일 경우 해당 범위 내의 요소를 전부 삭제한다.