티스토리 뷰
https://doc.rust-lang.org/std/vec/struct.Vec.html
std::vec::Vec - Rust
doc.rust-lang.org
Rust Vector Container 정리
- Vector는 메모리 상에 서로 이웃하도록 모든 값을 집어넣는 단일 데이터 구조 안에 하나 이상의 값을 저장.
- Vector는 같은 타입의 값만을 저장.
- index로 데이터에 접근이 가능하다.
1. Vector 생성자
- 다른 변수와 마찬가지로 let, let mut 키워드로 생성하며, 제너릭 타입을 입력한다. (여기서는 i32 사용)
let mut vec: Vec<i32> = Vec::new();
let mut vec: Vec<i32> = vec![];
- 변수 선언시 데이터를 할당하여 초기화 할 수 있다.
//둘다 똑같이 0을 5개 할당하는 내용이다.
let mut vec: Vec<i32> = vec![0, 0, 0, 0, 0];
let mut vec: Vec<i32> = vec![0; 5];
2. Vector 멤버함수
• vec.push(1)
- 마지막 원소 뒤에 데이터 삽입
• vec.pop()
- 마지막 원소 제거
• vec.len()
- vector의 길이를 반환
• vec.contains(&1)
- vector에 1이 포함되어 있으면 true, 아니라면 false를 반환
• vec.is_empty()
- vector가 비어있으면 true, 아니라면 false를 반환
• vec.iter()
- iterator로 변환하며 항상 빌려온다
for i: &i32 in v.iter(){
println!("{}", i);
}
• vec.into_iter()
- iterator로 변환하며 소유권을 뺏어온다.
for i: i32 in v.into_iter(){
println!("{}", i);
}
• vec.iter_mut()
- iterator로 변환하며 값을 변경할 수 있다.
- * 참조자를
let mut v: Vec<i32> = Vec::new();
v.push(1);
v.push(2);
v.push(3);
for i in v.iter_mut(){
*i += 1;
}
println!("{:?}", v);
//결과 = [2, 3, 4]
• vec.drain()
- vector의 지정한 범위만큼 제거한다.
- 반환값은 Drain<T>이며 동일 scope에서 한번만 실행할 수 있다.
- as_slice() 메서드로 참조배열타입을 반환할 수 있다.
let mut v: Vec<i32> = Vec::new();
//문법 -> v.drain(from..to);
v.push(5);
v.push(19);
v.push(4);
v.drain(..1);
let tmp = v.drain(..1);
//결과 => Drain([19, 4]);
tmp.as_slice()
//결과 => &[19, 4]
• vec.append()
- vector에 다른 vector를 합친다.
let mut v1: Vec<i32> = vec![1, 2, 3];
let mut v2: Vec<i32> = vec![4, 5, 6];
v1.append(&mut v2);
//v1 => [1, 2, 3, 4, 5, 6]
• vec.remove(index)
- vector의 index를 제거한다.
let mut v: Vec<i32> = vec![1, 2, 3];
v.remove(0);
println!("{:?}", v);
// 결과 => [2, 3]
• vec.get(index)
- vector의 index값을 Option형으로 반환한다.
let mut v: Vec<i32> = vec![1, 2, 3];
let t = v.get(2);
match t {
Some(num) => {
println!("{}", num);
},
_ => {
println!("None")
}
}
//결과 => 3
'Rust-Language > Syntax' 카테고리의 다른 글
문자열 method(계속 추가) (0) | 2021.07.22 |
---|---|
vec 중복원소 제거 함수 (0) | 2021.05.12 |
rust 형변환 string에서 integer, integer에서 string (0) | 2021.04.26 |