Coding/Tip !!

c++ 동적 배열 사용 vector

IMyoungho 2018. 9. 19. 17:37

Vector

기본 사용법이다. 

Vector를 사용하면 동적인 배열을 사용할 수 있다.

아래의 코드를 보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
 
 
int main(){
 
    //int *hello_arr = new int[5]; //보통 배열의 동적할당 시 이런식으로 할당한 뒤에
    vector<int> arr = { 12345 };
    
    for (auto &element :  arr)
        cout << element << " ";
    cout << endl;
 
    //delete[] hello_arr; // 마지막에 메모리를 헤제해줘야한다.
 
    return 0;
}
cs


이런식으로 보통의 동적할당은 사용후에 delete를 해줘야하는 번거로움이 있지만

vector를 사용하면 굳이 해주지않아도 블록밖으로 코드순서가 나가거나 return이

일어나면 자동으로 해제되어서 메모리가 leak되지 않는다는 장점이 있다.


또한 기존의 사용법에서는 *hello_arr만 봐서는 그 크기를 알 수 없지만

vector를 사용하여 함수의 파라미터로 보내게되면 자신의 크기를 기억하고 있기 때문에 편리하다.

ex) arr.size() 함수를 사용하면 크기를 알 수 있다.

ex) arr.resize(숫자 크기)함수를 사용하면 동적할당 크기를 늘리거나 줄일 수 있다는 점이 있다.

ex) arr.at(숫자크기)함수를 사용한다면??

보통의 arr[10]의 경우 현재 배열의 크기가 5인데도 불구하고 배열의 크기를 넘었는지 넘지않았는지 검사없이 

해당 메모리에 무조건 접근해보게된다.

하지만 arr.at(10)하게되면 이러한 부분을 검사해보고 넘게되면 예외처리를 진행한다. -> 위에보단 살짝 속도가 느릴 수 있다.


반응형