[C++] vector
vector<int> a(3)
와 vector<int> a[3]
의 차이는 ??
1. vector<int> a(3)
는 0으로 초기화 되어있는 사이즈 3의 a 라는 벡터를 만드는 것을 의미합니다.
아주 기본적인 형태의 선언 방식이고 우리가 알고 있는 모든 방식의 접근이 가능합니다.
{
vector<int> a(3); //0,0,0
a.push_back(1); //0,0,0,1
a.push_back(2); //0,0,0,1,2
a.pop_back(); //0,0,0,1
cout << a[0]; // 출력 : 0
}
다른 설명이 없어도 이해할 수 있을거라 생각하기 때문에 두번째로 넘어가겠습니다.
2. vector<int> a[3]
는 모든 요소가 벡터 a 로 이루어진 3칸짜리의 배열을 생성한다고 생각하면 됩니다.
표로 보면 이런거죠.
1 | 2 | 3 |
---|---|---|
a | a | a |
이렇게 되면 한칸에 존재하는 벡터는 vector<int> a
이렇게 선언된 벡터와 동일하게 됩니다.
따라서 안에 있는 값을 출력해보면 아무것도 나오지 않습니다. 사이즈가 3인 것도 아니라는 말이죠.
그럼 이걸 어디에 사용할 수 있을 까요?
그래프를 만들 때 정점이란 게 필요합니다. 저희는 이걸 인접 리스트 또는 연결 리스트를 사용해서 구현을 하죠. 인접 리스트를 사용하는 경우 보통 2차원 배열을 선언해서 간선을 입력합니다.
하지만 vector<int> a[3]
이런식으로 선언을 하게 되면 3개의 a 라는 벡터 각각이 정점이 되는 겁니다.
예시를 들고 글을 마치겠습니다.
vector<int> a[3];
for (int element : a[1]) {
cout << element;
}
// 출력 :
a[1].push_back(1);
a[1].push_back(2);
// 보통은 a.push_back() 을 사용한다.
// 여기서 a[1] 안에 a라는 벡터가 존재함을 알수있다.
for (int element : a[1]) {
cout << element << ' ';
}
출력 : 1 2
//cout << a[1]; 이런건 불가능
Leave a comment