-
[C++] vector<int> a(3) 와 vector<int> a[3] 의 차이는 ?프로그래밍/C++ 2020. 1. 17. 01:45
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]; 이런건 불가능
'프로그래밍 > C++' 카테고리의 다른 글
[C++] pair, tuple 보다 편한게 구조체(Struct) ? (0) 2020.05.08 [C++] Map 컨테이너 기본 사용법 및 예제 (0) 2020.05.08 [C/C++] memset 함수 기본 사용법 및 예제 (0) 2019.08.28 [C/C++] C++ STL Pair 기본 사용법 및 예제 (0) 2019.08.23 [C/C++] C++ STL Stack 기본 사용법 및 예제 (0) 2019.08.22