러스트에서 1개의 벡터를 두개로 분리하는 방법에 대해서 알아보겠습니다.
1. split_off()를 이용한 방법
v1.split_off(N)
은 [0, N] 범위(Index 0은 포함하고 N은 포함하지 않는)의 벡터를 잘라서 두개로 분리합니다.
- [0, N] 범위의 요소들은 v1에 남겨지고, 나머지는 새로운 벡터에 추가되어 리턴됨
- v1 객체의 데이터 변경이 있기 때문에 mut으로 선언
fn main() {
let mut v1 = vec![1, 2, 3, 4, 5, 6];
let v2 = v1.split_off(3);
println!("v1: {:?}", v1);
println!("v2: {:?}", v2);
}
Output:
v1: [1, 2, 3]
v2: [4, 5, 6]
2. drain()을 이용한 방법
v1.drain(N..).collect()
는 v1에서 Index N에서 마지막 요소까지의 요소들을 v1에서 제거하고 새로운 벡터로 이동시킵니다. 그리고 벡터 객체를 리턴합니다.
- v1 객체의 데이터 변경이 있기 때문에 mut으로 선언
fn main() {
let mut v1 = vec![1, 2, 3, 4, 5, 6];
let v2: Vec<_> = v1.drain(3..).collect();
println!("v1: {:?}", v1);
println!("v2: {:?}", v2);
}
Output:
v1: [1, 2, 3]
v2: [4, 5, 6]
3. split_at()를 이용한 방법
v1.split_at(N)
은 [0, N] 범위(Index 0은 포함하고 N은 포함하지 않는)의 벡터를 잘라서 두개의 배열로 분리합니다.
- 아래 예제에서 [0, N] 범위의 요소들은 새로운 배열로 left에 리턴되고, 나머지는 right에 리턴됨
split_at()
으로 분리되는 객체는 벡터가 아닌 배열
fn main() {
let v = vec![1, 2, 3, 4, 5, 6];
let (left, right) = v.split_at(3);
println!("v: {:?}", v);
println!("left: {:?}", left);
println!("right: {:?}", right);
}
Output:
v: [1, 2, 3, 4, 5, 6]
left: [1, 2, 3]
right: [4, 5, 6]
4. chunks()를 이용한 방법
v1.chunks(N).collect()
은 벡터 v1에서 N개씩 분리하여 각각의 배열로 저장하고, 분리된 배열들을 벡터에 저장하여 리턴합니다.
아래 예제에서 v2의 타입은 Vec<&[i32]>
가 됩니다.
fn main() {
let mut v1 = vec![1, 2, 3, 4, 5, 6];
let v2: Vec<_> = v1.chunks(2).collect();
println!("v1: {:?}", v1);
println!("v2: {:?}", v2);
}
Output:
v1: [1, 2, 3, 4, 5, 6]
v2: [[1, 2], [3, 4], [5, 6]]
Loading script...
Related Posts
- Rust - String을 char 리스트(Vector)로 변환
- Rust - 문자가 대문자인지 소문자인지 확인
- Rust - String에서 줄바꿈(newline) 문자 제거 방법
- Rust - String 대문자, 소문자 변환
- Rust - 현재 시간 가져오기 (DateTime, chrono)
- Rust - 예외 처리 방법 (Exception handling)
- Rust - String.find()으로 문자열 Index 찾기
- Rust - match (Switch) 사용 방법
- Rust - Vector의 요소 제거 방법 (remove, retain, drain)
- Rust - String의 특정 Index 값 가져오기
- Rust - 문자열 뒤집기, 역순으로 변경
- Rust - String 객체에 문자열 추가하기
- Rust - sleep(), 몇 초 지연/대기 방법
- Rust - String을 Int, Float으로 변환
- Rust - Integer를 String으로 변환
- Rust - Float를 String으로 변환
- Rust - String 비교 방법 (==, !=, eq, ne)
- Rust - String을 str으로, str을 String으로 변환
- Rust - String 공백 제거 (trim, replace)
- Rust - 2개의 배열이 같은지 비교 (==, equals)
- Rust - 배열 길이 가져오기 (Array length)
- Rust - Vector를 배열로 변환 (vector to array)
- Rust - 배열의 최소, 최대 값 찾기 (min, max)
- Rust - 배열의 합계, 평균 (sum, average)
- Rust - 2개의 Vector가 같은지 비교 (==, equals)
- Rust - HashMap을 Vector로 변환
- Rust - Vector의 최소, 최대 값 찾기 (min, max)
- Rust - Vector의 합계, 평균 (sum, average)
- Rust - 벡터 길이 가져오기 (Vector length)
- Rust - 배열을 HashSet으로 변환
- Rust - 배열을 벡터로 변환하는 방법
- Rust - 배열(벡터) 모든 요소 출력
- Rust - 배열 나누기, 자르기 (split_at, slice)
- Rust - 2개 벡터 하나로 합치기
- Rust - HashSet을 Vector로 변환