Rust - 벡터 중복 요소 제거

러스트에서 Vector의 중복 요소들을 모두 제거하는 방법에 대해서 알아보겠습니다.

1. dedup()를 이용한 방법

dedup()는 벡터에서 연속적으로 동일한 값을 갖는 요소들을 제거합니다.

따라서, sort()로 먼저 정렬하고 dedup()으로 중복 요소들을 제거할 수 있습니다.

fn main() {
    let mut v = vec![1, 2, 1, 2, 3, 4, 1, 5, 6, 5];
    v.sort();
    v.dedup();
    println!("{:?}", v);
}

Output:

[1, 2, 3, 4, 5, 6]

2. HashSet을 이용한 방법

HashSet은 중복 요소 저장을 허용하지 않는 자료구조이기 때문에, 벡터를 HashSet으로 변경하면 중복 요소들이 모두 제거됩니다.

HashSet으로 변경하여 중복을 제거한 뒤에, 다시 Vector로 변경하면 중복이 제거된 Vector를 얻을 수 있습니다.

use std::collections::HashSet;

fn main() {
    let mut v1 = vec![1, 2, 1, 2, 3, 4, 1, 5, 6, 5];
    let v2: Vec<_> = v1.into_iter().collect::<HashSet<_>>().into_iter().collect();
    println!("{:?}", v2);
}

Output:

[5, 2, 4, 1, 3, 6]

위 예제에서 into_iter()를 사용하여 v1의 소유권을 가져왔기 때문에, 변환 후 v1을 사용할 수 없습니다. v1을 사용해야 한다면 iter()를 사용해야 합니다.

정렬된 벡터를 얻고 싶다면 v2를 mut으로 선언하고, v2.sort()로 정렬하면 됩니다.

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha