티스토리 뷰

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 생성자

 - 다른 변수와 마찬가지로 letlet 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함