러스트에서 벡터(Vector)를 사용하여 데이터를 다루는 방법을 알아보겠습니다.
러스트의 벡터도 다른 언어처럼 push(), remove(), get(), contains(), len() 등의 기능을 제공합니다.
1. 벡터 생성 및 초기화
벡터는 Vec<TYPE>
으로 선언할 수 있습니다.
- 벡터의 내용물을 변경하려면
mut
키워드를 사용하여 mutable로 선언 Vec<i32>
으로 지정된 1가지 타입 객체들만 저장
아래 예제는 비어있는 Vector가 생성됩니다.
let mut my_vec: Vec<i32> = Vec::new();
초기 값 설정
벡터를 생성하면서 동시에 초기 값을 입력하려면 아래와 같이 vec![1, 2, ...]
처럼 생성하면 됩니다.
let mut my_vec: Vec<i32> = vec![1, 2, 3];
벡터의 요소들이 i32
타입이기 때문에 아래와 같이 타입을 따로 입력하지 않아도 암시적으로 타입이 추론되어 컴파일됩니다.
let mut my_vec = vec![1, 2, 3];
2. 벡터 길이: len()
len()
함수는 벡터가 갖고 있는 요소들의 개수를 리턴합니다. 즉, 벡터의 길이가 리턴됩니다.
fn main() {
let mut my_vec: Vec<i32> = Vec::new();
let mut my_vec2: Vec<i32> = vec![1, 2, 3];
let mut my_vec3 = vec![1, 2, 3, 4];
print!("my_vec: {}, my_vec2: {}, my_vec2: {}", my_vec.len(), my_vec2.len(), my_vec3.len());
}
Output:
my_vec: 0, my_vec2: 3, my_vec2: 4
3. 벡터의 요소 값(value) 읽기
vector[index]
는 vector의 index에 위치한 value를 리턴합니다.
아래와 같이 Index로 벡터의 요소 값에 접근할 수 있습니다.
fn main() {
let mut my_vec = vec![1, 2, 3];
println!("my_vec[0]: {}, my_vec[1]: {}, my_vec[2]: {}", my_vec[0], my_vec[1], my_vec[2]);
}
Output:
my_vec[0]: 1, my_vec[1]: 2, my_vec[2]: 3
4. 벡터에 요소 추가: push()
push(value)
는 벡터의 뒤쪽에 value를 추가합니다.
아래와 같이 1, 2, 3을 순차적으로 추가하면 늦게 추가되는 value가 벡터의 뒤쪽에 추가됩니다. (출력해보면 3이 가장 마지막에 출력됨)
fn main() {
let mut my_vec = Vec::new();
my_vec.push(1);
my_vec.push(2);
my_vec.push(3);
println!("{:?}", my_vec);
}
Output:
[1, 2, 3]
5. 벡터의 요소 삭제: remove()
remove(index)
는 벡터에서 index에 위치한 value를 제거합니다.
아래 예제는 Index 1의 요소를 삭제하는 코드입니다.
fn main() {
let mut my_vec = Vec::new();
my_vec.push(1);
my_vec.push(2);
my_vec.push(3);
// Index 1의 value 삭제
my_vec.remove(1);
println!("{:?}", my_vec);
}
Output:
[1, 3]
6. 특정 요소 포함 여부 확인: contains()
contains(&value)
는 벡터에 value가 포함되어있을 때 true, 그렇지 않으면 false를 리턴합니다.
아래 예제는 3 추가 전, 후에 contains()
로 포함 여부를 확인하는 코드입니다.
fn main() {
let mut my_vec = Vec::new();
my_vec.push(1);
my_vec.push(2);
if my_vec.contains(&3) {
println!("Found 3");
} else {
println!("No found 3");
}
// 3 추가 후 contains로 확인
my_vec.push(3);
if my_vec.contains(&3) {
println!("Found 3");
} else {
println!("No found 3");
}
}
Output:
No found 3
Found 3
7. for문으로 벡터 순회
반복문으로 벡터의 모든 요소를 순회할 수 있습니다.
아래 예제는 for문으로 벡터의 모든 값들을 출력하는 예제입니다.
fn main() {
let mut my_vec = Vec::new();
my_vec.push(1);
my_vec.push(2);
my_vec.push(3);
for i in &my_vec {
println!("{}", i);
}
}
Output:
1
2
3
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로 변환