인접한 중복 원소를 제거
unique는 인접한 중복된 원소들을 찾아 첫 번째 원소만 남기고, 나머지 원소들은 뒤로 밀어냅니다.
이 함수는 실제로 원소를 제거하는 것이 아니라, 중복된 원소들을 뒤로 덮어씌우는 방식입니다.
unique는 중복이 제거된 마지막 유효 원소의 다음 위치를 반환합니다. 이후 erase와 결합하여 실제로 원소를 삭제할 수 있습니다.
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 1, 2, 2, 3, 3, 3};
// unique로 인접한 중복을 제거
auto it = std::unique(vec.begin(), vec.end());
// 중복을 제거한 후의 벡터 (하지만 아직 끝까지 유효하지 않음)
vec.erase(it, vec.end());
for (int num : vec) {
std::cout << num << " "; // 출력: 1 2 3
}
return 0;
}