[Rust/러스트] 벡터 다루기
2022. 2. 21. 10:46ㆍProgramming Language/Rust
반응형
■ 벡터
벡터는 데이터량이 컴파일 타임에 결정되지 않아도 되며, 프로그램 실행 시 늘어나거나 줄어들 수 있기 때문에 힙에 저장됩니다. 또한 메모리 상에 서로 이웃하도록 모든 값을 단일 데이터 구조 안에 하나 이상의 값을 저장하도록 해줍니다. 벡터는 같은 타입의 값만을 저장할 수 있으며, 벡터는 스코프 밖으로 벗어날 시 해제됩니다.
◆ 벡터 생성
벡터를 생성하는 방법은 두 가지입니다.
첫번째, 제네릭을 통한 데이터 타입 설정과 Vec 구조체의 new 함수를 통한 벡터 생성
두번째, vec! 매크로를 통한 벡터 생성
fn main(){
// new 함수를 활용하여 벡터 생성
let v1 : Vec<u32> = Vec::new();
// vec! 매크로를 활용하여 벡터 생성
let v2 : Vec<u32> = vec![1,2,3,4,5];
}
◆ 벡터 요소 읽기
벡터 내의 요소를 읽기 위한 방법은 두 가지입니다.
첫번째, 참조자(&) 또는 대괄호([])와 인덱스를 활요한 (인덱스를 벗어날 경우 프로그램이 panic 상태가 될 수 있으니 주의가 필요합니다.)
두번째, get 함수에 인덱스 파라미터를 넘김으로써 요소에 접근하며, 반환값으로 Option<&T>를 얻습니다.(인덱스를 벗어날 경우 None이 반환됩니다.)
fn main(){
let v = vec![10, 20, 30];
println!("첫번째 요소 : {}", &v[0]);
println!("두번째 요소 : {:?}", v.get(1));
}
▶ 출력 결과
첫번째 요소 : 10
두번째 요소 : Some(20)
◆ 벡터 요소 추가
벡터를 생성하고 push 함수를 활용하여 요소를 추가합니다.
fn main(){
// new 함수를 활용하여 벡터 생성
let mut v1 : Vec<u32> = Vec::new();
// push 함수를 통해 데이터 추가
v1.push(1);
v1.push(2);
v1.push(3);
println!("Vec : {:?}", v1);
}
▶ 출력 결과
Vec : [1, 2, 3]
◆ 벡터 요소 수정
벡터의 요소를 수정하기 위해서는 선언 및 초기화시 mut 접두어를 붙여줍니다. 벡터 내의 요소를 수정하는 방법은 두가지입니다.
첫번째, 대괄호([])와 인덱스를 활용한 수정
fn main(){
let mut v = vec![10,20,30];
println!("첫번째 요소 수정 전 : {}", v[0]);
// 첫번째 요소 수정
v[0] = 11;
println!("첫번째 요소 수정 후 : {}", v[0]);
}
▶ 출력 결과
첫번째 요소 수정 전 : 10
첫번째 요소 수정 후 : 11
두번째, 참조(&)와 역참조(*)를 활용한 수정
fn main(){
let mut v = vec![10,20,30];
println!("수정 전 : {:?}", v);
// 전체 요소 수정
for i in &mut v{
*i += 100;
}
println!("수정 후 : {:?}", v);
}
▶ 출력 결과
수정 전 : [10, 20, 30]
수정 후 : [110, 120, 130]
반응형
'Programming Language > Rust' 카테고리의 다른 글
[Rust/러스트] 해쉬맵(HashMap) 다루기 (0) | 2022.02.21 |
---|---|
[Rust/러스트] 스트링 다루기 (0) | 2022.02.21 |
[Rust/러스트] 패턴 매칭(match, if let) 정리 (0) | 2022.02.21 |
[Rust/러스트] 열거형(enum) 정리 (0) | 2022.02.20 |
[Rust/러스트] 구조체의 메소드, 연관함수 (0) | 2022.02.17 |