Rust - Vector 알아보기 (push/remove/get/contains)

러스트에서 벡터(Vector)를 사용하여 데이터를 다루는 방법을 알아보겠습니다.

러스트의 벡터도 다른 언어처럼 push(), remove(), get(), contains(), len() 등의 기능을 제공합니다.

1. 벡터 생성 및 초기화

벡터는 Vec<TYPE>으로 선언할 수 있습니다.

  • 벡터의 내용물을 변경하려면 mut 키워드를 사용하여 mutable로 선언
  • Vec<i32>으로 지정된 1가지 타입 객체들만 저장

아래 예제는 비어있는 Vector가 생성됩니다.

let mut my_vec: Vec<i32> = Vec::new();

초기 값 설정

벡터를 생성하면서 동시에 초기 값을 입력하려면 아래와 같이 vec![1, 2, ...]처럼 생성하면 됩니다.

let mut my_vec: Vec<i32> = vec![1, 2, 3];

벡터의 요소들이 i32 타입이기 때문에 아래와 같이 타입을 따로 입력하지 않아도 암시적으로 타입이 추론되어 컴파일됩니다.

let mut my_vec = vec![1, 2, 3];

2. 벡터 길이: len()

len() 함수는 벡터가 갖고 있는 요소들의 개수를 리턴합니다. 즉, 벡터의 길이가 리턴됩니다.

fn main() {
    let mut my_vec: Vec<i32> = Vec::new();
    let mut my_vec2: Vec<i32> = vec![1, 2, 3];
    let mut my_vec3 = vec![1, 2, 3, 4];

    print!("my_vec: {}, my_vec2: {}, my_vec2: {}", my_vec.len(), my_vec2.len(), my_vec3.len());
}

Output:

my_vec: 0, my_vec2: 3, my_vec2: 4

3. 벡터의 요소 값(value) 읽기

vector[index]는 vector의 index에 위치한 value를 리턴합니다.

아래와 같이 Index로 벡터의 요소 값에 접근할 수 있습니다.

fn main() {
    let mut my_vec = vec![1, 2, 3];

    println!("my_vec[0]: {}, my_vec[1]: {}, my_vec[2]: {}", my_vec[0], my_vec[1], my_vec[2]);
}

Output:

my_vec[0]: 1, my_vec[1]: 2, my_vec[2]: 3

4. 벡터에 요소 추가: push()

push(value)는 벡터의 뒤쪽에 value를 추가합니다.

아래와 같이 1, 2, 3을 순차적으로 추가하면 늦게 추가되는 value가 벡터의 뒤쪽에 추가됩니다. (출력해보면 3이 가장 마지막에 출력됨)

fn main() {
    let mut my_vec = Vec::new();
    my_vec.push(1);
    my_vec.push(2);
    my_vec.push(3);

    println!("{:?}", my_vec);
}

Output:

[1, 2, 3]

5. 벡터의 요소 삭제: remove()

remove(index)는 벡터에서 index에 위치한 value를 제거합니다.

아래 예제는 Index 1의 요소를 삭제하는 코드입니다.

fn main() {
    let mut my_vec = Vec::new();
    my_vec.push(1);
    my_vec.push(2);
    my_vec.push(3);

    // Index 1의 value 삭제
    my_vec.remove(1);

    println!("{:?}", my_vec);
}

Output:

[1, 3]

6. 특정 요소 포함 여부 확인: contains()

contains(&value)는 벡터에 value가 포함되어있을 때 true, 그렇지 않으면 false를 리턴합니다.

아래 예제는 3 추가 전, 후에 contains()로 포함 여부를 확인하는 코드입니다.

fn main() {
    let mut my_vec = Vec::new();
    my_vec.push(1);
    my_vec.push(2);

    if my_vec.contains(&3) {
        println!("Found 3");
    } else {
        println!("No found 3");
    }

    // 3 추가 후 contains로 확인
    my_vec.push(3);
    if my_vec.contains(&3) {
        println!("Found 3");
    } else {
        println!("No found 3");
    }
}

Output:

No found 3
Found 3

7. for문으로 벡터 순회

반복문으로 벡터의 모든 요소를 순회할 수 있습니다.

아래 예제는 for문으로 벡터의 모든 값들을 출력하는 예제입니다.

fn main() {
    let mut my_vec = Vec::new();
    my_vec.push(1);
    my_vec.push(2);
    my_vec.push(3);

    for i in &my_vec {
        println!("{}", i);
    }
}

Output:

1
2
3
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha