아래는 std::vector에서 중복된 데이터를 제거하는 std::unique 함수 사용 예제입니다. 이 예제에서는 C++의 vector에 중복된 데이터가 있을 때, std::unique 함수를 이용해 어떻게 중복을 제거할 수 있는지 설명드릴게요.
C++ std::vector에서 std::unique 함수 사용하기
C++의 std::unique 함수는 정렬된 범위에서 연속된 중복 요소를 제거하는 데 사용됩니다. 여기서 중요한 점은, 이 함수가 중복된 요소를 완전히 제거하지는 않으며, 중복된 요소들을 뒤쪽으로 보내고 나머지 고유한 값들이 앞쪽에 정렬되도록 해준다는 점입니다. 중복된 요소들은 제거하지 않으므로 실제로 벡터에서 불필요한 데이터를 완전히 삭제하려면 erase와 함께 사용해야 합니다.
코드 예제
#include <iostream>
#include <vector>
#include <algorithm> // std::sort, std::unique
int main() {
// 초기 벡터 데이터: 중복된 값이 포함되어 있음
std::vector<int> vec = {1, 2, 2, 3, 4, 4, 5, 6, 6, 7};
// 중복된 값을 제거하기 전에 벡터를 정렬합니다.
std::sort(vec.begin(), vec.end());
// 중복된 값을 제거한 후 고유한 값이 남는 벡터 범위의 끝을 반환합니다.
auto last = std::unique(vec.begin(), vec.end());
// 벡터에서 중복된 값들을 실제로 삭제하기 위해 `erase` 사용
vec.erase(last, vec.end());
// 결과 출력
std::cout << "중복 제거 후 벡터: ";
for (const auto& v : vec) {
std::cout << v << " ";
}
std::cout << std::endl;
return 0;
}
실행 결과
중복 제거 후 벡터: 1 2 3 4 5 6 7 설명
std::sort:std::unique함수는 연속된 중복 요소만 제거하기 때문에, 먼저 벡터를 정렬해야 제대로 동작합니다.std::unique: 이 함수는 중복된 요소를 제거하고, 마지막 고유한 요소 이후의 위치를 반환합니다.vec.erase(last, vec.end()):std::unique로 중복된 값들이 뒤쪽으로 이동되므로, 실제로 벡터에서 그 요소들을 삭제하기 위해erase를 사용합니다.
위 코드는 std::vector에서 중복된 값을 제거하는 방법을 잘 보여줍니다. 이처럼 std::sort와 std::unique를 함께 사용하면 간단하게 벡터에서 중복된 데이터를 처리할 수 있습니다.
이 예제가 도움이 되셨길 바랍니다! std::unique를 통해 벡터의 중복된 데이터를 손쉽게 제거해보세요.