반응형
Vector
Vector는 컬렉션 타입이며 메모리에서 모든 값을 근처에 있는 단일 데이터 구조에 둘 이상의 값을 저장할 수 있습니다. 또, 벡터는 같은 유형의 값만 저장할 수 있습니다. 벡터는 컴파일 타임에 사이즈를 정할 필요는 없고, 동작중에 늘어나거나 줄어들 수 있습니다. 벡터는 scope밖으로 벗어날 경우 해제 됩니다
벡터 생성
벡터를 생성하려면 Vec::new() 함수 또는 vec! 매크로로 생성을 합니다.
초기 값으로 벡터를 생성하면 Rust는 값의 타입을 유추합니다.
let v: Vec<i32> = Vec::new();
let v = vec![1, 2, 3];
Element 추가
push() 메소드를 사용하면 벡터에 element를 넣을 수 있습니다.
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
Element 삭제
pop() 메소드를 사용하면 벡터에서 마지막 element를 지울 수 있습니다.
let mut v = vec![1, 2, 3];
let elem = v.pop();
println!("{elem:?}"); // Some(3)
Element 얻기(get)
벡터에서 저장된 값을 참조하는 방법에는 두가지가 있습니다. 하나는 참조자(&) 또는 대괄호([])를 이용한 인덱싱이고 하나는 get() 메소드를 이용한 방법입니다. 인덱스를 벗어나는 경우 panic될 수 있습니다
let v = vec![1, 2, 3];
let v0 = &v[0];
let v1 = v.get(1);
println!("{v0}, {v1:?}"); // 1, Some(2)
get의 경우는 Option<&T>를 반환하고 인덱스를 벗어나는 경우 None이 반환됩니다.
Iterate Element
벡터는 루프에서 모든 element를 이터레이트 될수 있습니다
let v = vec![1, 2, 3];
for i in &v {
println!("{i}");
}
반응형
'Rust' 카테고리의 다른 글
[Rust] 제어문 If-else, while, do-while (0) | 2022.10.18 |
---|---|
[Rust] string과 str의 차이점은? (0) | 2022.10.11 |
[Rust] 타입 추론 (Type Inference) (0) | 2022.09.16 |
Rust, If 문 및 loop문, control flow (제어문) (0) | 2020.01.27 |
Rust, 튜플 (0) | 2020.01.20 |