Rust - 2개 벡터 하나로 합치기

러스트에서 2개의 벡터를 하나의 벡터로 합치는 방법에 대해서 알아보겠습니다.

1. append()를 이용한 방법

Vector의 append() 함수는 v1.append(v2) 처럼 사용할 수 있으며 v2의 모든 요소들을 v1으로 이동시킵니다.

  • 2개 벡터의 모든 요소가 v1 벡터로 합쳐지며, v2는 Empty가 됨
  • 2개 벡터가 모두 데이터 변경이 있기 때문에, 둘다 mut으로 선언
fn main() {
    let mut vec1 = vec![1, 2, 3];
    let mut vec2 = vec![4, 5, 6];

    vec1.append(&mut vec2);
    println!("vec1: {:?}", vec1);
    println!("vec2: {:?}", vec2);
}

Output:

vec1: [1, 2, 3, 4, 5, 6]
vec2: []

2. extend()를 이용한 방법

Vector의 extend()v1.extend(v2.iter())처럼 사용하며, 인자로 전달된 iterator의 요소들이 v1에 추가됩니다.

  • v1에 v2의 요소들이 추가됨
  • v2의 요소는 사라지지 않고, 변함 없음
  • v1만 변경되기 때문에 v1에만 mut 선언
fn main() {
    let mut vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];

    vec1.extend(vec2.iter());
    println!("vec1: {:?}", vec1);
    println!("vec2: {:?}", vec2);
}

Output:

vec1: [1, 2, 3, 4, 5, 6]
vec2: [4, 5, 6]

3. concat()을 이용한 방법

아래와 같이 as_slice()concat()을 사용하여 벡터들을 하나의 벡터로 합칠 수 있습니다.

  • vec1과 vec2의 데이터 변경은 없음, mut으로 선언 안해도 됨
  • concat()으로 합쳐진 벡터가 리턴됨
  • 3개 이상의 벡터도 한번에 concat()으로 합칠 수 있음
fn main() {
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];

    let combined_vec = [vec1.as_slice(), vec2.as_slice()].concat();
    println!("vec1: {:?}", vec1);
    println!("vec2: {:?}", vec2);
    println!("combined: {:?}", combined_vec);
}

Output:

vec1: [1, 2, 3]
vec2: [4, 5, 6]
combined: [1, 2, 3, 4, 5, 6]
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha