코딩/C++

[C++] 벡터 사용 시, () 선언과 [] 선언의 차이

kimyunseok 2021. 7. 27. 11:36

vector 선언 시 []괄호와 ()괄호의 차이가 있다.

  1. []괄호로 선언시, 텅 빈 이차원 배열이라고 생각하면 된다. 각 벡터의 인덱스마다 동적으로 크기를 할당할 수 있다.
  2. ()괄호로 선언시, 처음에 그 공간들을 만든 후동적으로 크기를 늘릴 수 있다.

예시로 확인해 보자면

 

[]괄호로 벡터 선언시,

[]괄호로 선언 시,
결과 창

[]괄호로 선언 시에는 배열의 높이에는 제한을 두고, 각 층마다는 동적으로 크기를 할당하겠다는 뜻이다.

에러가 나는 코드

위 코드는 벡터의 인덱스를 넘었으므로 에러가 나게 된다.

결과 창

출력을 안해서 에러가 안나 보일 수 있겠지만 비정상적으로 종료된 것을 커맨드에서 확인할 수 있다.

 

()괄호로 벡터 선언시,

()괄호로 벡터를 선언한 코드

이 코드에서는 처음에 선언한 1001의 크기를 벗어났다.

하지만 처음 선언한 1001의 크기는 사실 큰 의미는 없다.

1001은 그냥 벡터를 처음에 할당할 때 초기화를 해준 값이라고 생각하면 된다.

결과 창

결과 창에서 확인할 수 있듯이, ()괄호로 선언한 벡터도 동적으로 크기가 늘어나는 것을 확인할 수 있다.

 

결론

1. 나는 크기가 동적인 배열을 여러 개 쓰고 싶다 ! 각 배열들은 초기화가 안 되어 있어도 상관 없다 !   

-> []괄호로 벡터 선언

 

2. 나는 처음에 특정 개수가 초기화가 되어있고 크기도 동적으로 늘어나는 배열을 한 줄 쓰고 싶다 ! 

-> ()괄호로 벡터 선언