카테고리 없음

c++ 벡터 중괄호()와 대괄호[] 선언 차이

쨍모 2020. 6. 16. 11:02

벡터를 알고 난 이후에

유용하게 쓰고 있던 나는

또 빨간줄을 발견하고는 찾아보았다.

 

vector<int> vc(5);

vector<int> vc[5];

의 차이를 말이다.

 

첫번째의 경우 5칸 짜리 벡터 배열을 하나 만든다는 거고

0~4 까지의 인덱스를 가지는 벡터 한줄 만드는 거다.

 

두번째의 경우는 5칸짜리 벡터 배열을 5개 만드는 거다.

즉 크기5배열이 5개가 묶여있는거다.

그래서 접근할 때 잘해야하는데

일단 초기화가안되어 있기 때문에 size가 전부 0 이다.

이상황에서 접근하면

vector subscript out of range 에러가 뜬다.

벡터에 값하나 없는데 접근하려 하니 범위 오류가 뜨는 거다.

 

이때는

vc[0].push_back(1);

과 같이

내가 값을 넣을 벡터 배열의 인덱스를 지정해주고

거기에 아무것도 없으니까 뒤에 값을 넣으면서 크기를 하나 동적으로 늘리겠다 그런 뜻이다.