ggjae / Algorithm-CS

🎅 1일 1알고리즘
0 stars 0 forks source link

[C++] vector<int> a[1000] 과 vector<int> a(1000, 0)의 차이는 무엇일까요? #25

Open ggjae opened 3 years ago

ggjae commented 3 years ago

vector a[1000] 과 vector a(1000, 0)의 차이는 무엇일까요?

vector a[1000]은 [vector, vector, .... , vector] 처럼 vector가 1000개 모여있는 2차원 배열이라고 생각하면 된다. 자주 사용해왔기 때문에 이것에 대한 이해는 쉽다.

하지만 vector a(1000,0)의 사용법은 정확히 몰랐고 이번 test.cpp를 만들어서 실험하며 어떤 역할을 하는지 깨달았다.

#include <iostream>
#include <vector>
using namespace std;

int main(){
    vector<int> a(5,0);
    a.push_back(1);
    a.push_back(2);
    a.push_back(3);
    a.push_back(4);
    a.push_back(5);
    a.push_back(6);
    for(int i=0;i<a.size();i++){
        printf("%d", a[i]);
    }
    return 0;
}

컴파일시에 출력은 '00000123456'이 나왔다.

vector a(5,0)은 vector를 배열처럼 최소공간을 만들어놓고, 초기화할 수 있다는 큰 장점을 가지고 있다고 느끼게 되었다.

vector의 큰 특징은 push_back으로 공간을 할당해주지 않으면 인덱스로 접근하지 못한다는 것이였는데

두번째의 test.cpp를 살펴보자.


#include <iostream>
#include <vector>
using namespace std;

int main(){
    vector<int> a(5,0);
    for(int i=0;i<a.size();i++){
        a[i] = i;
        printf("%d",a[i]);
    }
    return 0;
}

에서는 바로 index로 접근했음에도 불구하고 '01234'의 출력이 나왔다. 벡터(동적할당)임에도 불구하고 유연하게 값을 초기화할 수 있다는 장점을 얻게 되었고 push_back으로 뒤에 추가하면서 자유롭게 공간을 늘릴 수 있다는 장점 또한 있다.

분석 끝!