그외/C++

[c++] vector<int>v(n) 과 vector<int>v[n]의 차이

세고래 2021. 5. 26. 04:40

※배워가고 있는 학생입니다. 틀린부분이 있다면 댓글로 알려주세요!

 

오늘 공부를 하다가 새롭게 알게 된 사실👀을 정리해보려고 한다.

사실 vector 자료형에 대해서 알고 응용해서 쓴지는 꽤 됐는데, 내가 이런 기본적인? 사실조차 몰랐다니 조금 놀랐다.

 

1) vector<int> v(n)

vector<int>v(n)은 사이즈 n만큼 0으로 초기화되어 있는 벡터를 선언한다는 의미다.

즉, n크기만큼의 벡터 배열을 생성하고 동시에 각 인덱스에 들어있는 값을 0으로 초기화한다는 것이다.

각 인덱스에 입력값이 주어지지 않는다면 0으로 그대로 출력된다.

vector<int> v(2); //0,0 
v.push_back(5); //0,0,5
v.push_back(2);  //0,0,5,2
cout << v[0]; // 0
2) vector<int>v[n]

vector<int>v[n]은 각각의 인덱스에 벡터가 들어가있는 즉, n개의 벡터로 이루어진 배열이다.

각 인덱스 안의 벡터에 push_back으로 값을 입력할 수 있으며,

(입력하는 수*n) 의 2차원 배열이라고 보면 된다.

vector<int>v[2];
v[0].push_back(1); //인덱스0에 들어있는 벡터에 push_back
v[1].push_back(2);//인덱스1에 들어있는 벡터에 push_back

cout<<v[0][0]; //1
cout<<v[1][0]; //2

 

나는 여기에서 한가지 의문이 들었다.

그러면 내가 알고 있는 vector<vector<int>>v 의 형식으로 사용하는 2차원배열과 다를바가 없지 않을까?

 

그래서 여러가지 문서를 찾아보았고, 명료한 답을 얻어냈다!

 

vector<int>v[n] : 벡터로 이루어진 array

vector<vector<int>v: 벡터로 이루어진 vector

 

둘의 차이는 우리가 기존에 알고 있던 array와 vector의 성질과 차이점으로 생각하면 된다.

vector<int>v[n]은 고정된, 정해진 크기만큼의 벡터들을 이용할 수 있지만

vector<vector<int>>v 는 고정된 크기가 아닌, 동적으로 이용할 수 있다.

 

array와 vector 에 대한 차이도 나중에 한 번 명확하게 정리해보고 싶다.

오늘은 이정도만 적고 자야지!

 

3) 참고자료

https://astrid-dm.tistory.com/164

https://pythonq.com/so/c%2B%2B/337296

https://www.quora.com/What-is-the-difference-between-vector-int-v-N-and-vector-int-v-N

https://astrid-dm.tistory.com/164

728x90

'그외 > C++' 카테고리의 다른 글

[c++] vector 중복원소 제거(sort, unique)  (0) 2021.06.16
[c++] vector<vector<int>> (이차원 벡터) 길이  (0) 2021.06.13