Skip to main content

Vec

Vec는 배열인데 매일 값을 넣거나 제거할 때마다 배열의 크기가 변합니다.

일반 배열은 항상 크기가 정해져 있기 때문에 값을 제거하거나 새롭게 넣을 수 없습니다.

Vec는 Vec<데이터>로 선언할 수 있습니다.

Vec 사용하기

vec!라는 매크로를 사용하면 다음에 나오는 배열은 바로 Vec로 선언할 수 있습니다.

vec![1, 2, 3, 4, 5] Vec는 크기가 지정되지 않았기 때문에 .push() 메서드나 .pop()를 사용해 새로운 값을 끝에 추가하거나 끝의 값을 제거할 수 있습니다.

참고로 Vec에 새로운 값을 추가하거나 삭제하기 위해서는 mut 변수여야 합니다.

그리고 Vec를 출력하기 위해서는 배열과 같이 {{ :? }}를 사용해야 합니다.

인덱스

get()이나 인덱스를 사용하면 vec의 값을 얻을 수 있습니다.

[]를 사용해도 됩니다.

get()을 사용하면 범위의 값을 저장할 수 있습니다.

숫자를 넣는 대신 a..b를 사용하면 a부터 b까지 사용하는 것이 가능합니다.

get()을 실행한 후 unwrap()을 사용하면 vec가 반환됩니다.

만일 값이 범위를 넘으면 None을 반환합니다. :::

len() 메서드와 인덱스

len() 메서드를 사용하면 배열의 크기를 알 수 있습니다.

그리고 배열처럼 []를 사용해 사이에 숫자를 넣으면 그 인덱스에 있는 값을 알 수 있습니다.

그리고 iter()르 사용하면 각 아이템을 순서대로 순회할 수 있습니다.

마지막으로 iter할 때 값을 바꾸고 싶다면 항상 iter_mut()를 사용하고 반환된 값 앞에 *를 붙여서 값을 지정하세요.

first(), first_mut(), last(), last_mut()

first는 백터의 가장 첫 번째 값을 찾고 _mut()를 붙이면 mut 변수가 되어서 반환됩니다.

last는 백터의 가장 마지막 값을 찾고 _mut()를 붙이면 mut 변수가 되어서 반환됩니다.

참고로 값을 저장하고 싶다면 unwrap()를 사용해서 Some()을 제거하세요.

enumerate() 메서드

enumerate() 메서드를 사용하면 각 아이템을의 인덱스와 값이 함께 순회할 수 있습니다.

(인덱스, 값) 튜플을 순회하면서 인덱스를 출력하고 값을 출력합니다.

for (index, value) in veccy.iter().enumerate() {
println!("{}에 {}", value, index);
}

그리고 enumerate()를 사용하면 iter()를 먼저 사용해야 됩니다.

::new() 사용하기

Vec::new() 를 사용하면 백터를 생성할 수 있습니다.

::new()를 사용하면 크기가 0이고 값이 없는 Vec가 만들어집니다.

Vec 슬라이싱

슬라이싱이란 일부 요소를 빼는 것을 말합니다.

fn main() {
let my_vec = vec![1, 2, 3, 4, 5];
let slice:&[i32] = &my_vec[2..4];

println!("Slice of the vector : {:?}",slice);
}