Rust에서 배열(Array)처럼 사용하는 Vector의 요소 제거 방법을 소개합니다.
1. 특정 Index 요소 제거
remove(index)
는 벡터에서 인자로 전달된 index에 해당하는 요소를 제거합니다.
- vector에서 요소가 제거되기 때문에 vec는 mut으로 선언
remove()
로 요소를 삭제하면 삭제된 값이 리턴됨
fn main() {
let mut vec = vec![1, 2, 3, 4, 5];
// Index 2의 요소 삭제
let index = 2;
let removed = vec.remove(index);
println!("vec: {:?}", vec);
println!("removed: {}", removed);
}
Output:
vec: [1, 2, 4, 5]
removed: 3
2. 특정 조건에 해당하는 요소들 제거
retain(함수)
는 함수의 리턴 값이 true인 요소들은 제거하지 않고, false인 요소들만 제거합니다.
함수는 요소의 값이 인자로 전달되며, true 또는 false를 리턴하도록 구현해야 합니다.
|&x| x < 5
는 요소 값이 5 미만일 때 true를 리턴하여 벡터에서 삭제되지 않음
fn main() {
let mut vec = vec![5, 2, 8, 1, 7, 4, 3, 9];
// 5보다 작은 요소들을 제외하고 모두 제거
vec.retain(|&x| x < 5);
println!("vec: {:?}", vec);
}
Output:
vec: [2, 1, 4, 3]
3. 특정 Index 범위의 요소들 모두 제거
drain(range)
는 range의 Index 범위의 요소들을 모두 제거합니다.
- range는
1..4
처럼 입력할 수 있으며,[1, 4)
범위(1은 포함하고 4는 포함하지 않는)의 인덱스 요소들을 제거 drain()
으로 제거된 요소들은collect()
를 이용하여 Vector로 리턴할 수 있음
fn main() {
let mut vec = vec![1, 2, 3, 4, 5, 6];
// Index 1 ~ 3의 요소들 제거
let range = 1..4;
let removed: Vec<_> = vec.drain(range).collect();
println!("vec: {:?}", vec);
println!("removed: {:?}", removed);
}
Output:
vec: [1, 5, 6]
removed: [2, 3, 4]
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로 변환