kangsy763   4년 전

평소 vector 2차를 사용할 경우에 vector<int> v(3,vector<int> (2)); 이렇게 3x2를 만드는 식으로 사용했었는데 

금방 문제를 풀면서 테스트해보다가 발견했는데

vector<int> v[3] 이렇게 선언한 다음에

v[0].push_back(1);

v[0].push_back(2);

를 하였을 때에 2로 덮어 씌여질줄 알았는데 v[0][0], v[0][1] 이렇게 따로 출력이 가능하고 각각 1,2 가 나오더라고요 ? ?

이런식으로 push_back을 하면 자동으로 그 부분만 2차원 vector로 처리되는 것인지 궁금합니다.

djm03178   4년 전

v[0]가 하나의 vector<int>입니다. 그러면 v[0]를 x라고 하면, v[0][0]는 x[0]와 같고 v[0][1]은 x[1]과 같습니다. x는 2차원이 아니고 1차원 벡터입니다.

kangsy763   4년 전

2차원 벡터 개념이 아니라 벡터안의 벡터 개념이군요! 

그렇다면 vector<int> v(3,vector<int> (2)); 이것 또한 1차원 벡터안의 벡터라고 생각해야하고 2차원벡터는 아닌건가요 ?

djm03178   4년 전

vector<int> v[3]에서 v는 벡터가 아니라 그냥 배열입니다. v[0]가 벡터인 것이고, v는 벡터의 배열입니다.

vector<int> v(3,vector<int> (2))에서 v 자체는 2차원 벡터가 맞습니다. 하지만 v[0]는 하나의 vector<int>이므로 1차원 벡터입니다.

kangsy763   4년 전

오우 명쾌한 해답에 무릎을 탁 치고갑니다 !!감사합니다 

댓글을 작성하려면 로그인해야 합니다.