[C++] vector

1 minute read

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]; 이런건 불가능

Updated:

Leave a comment