인프런 커뮤니티 질문&답변

ms님의 프로필 이미지
ms

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

STL vector 질문

작성

·

309

0

제가 유니티, c# 자료구조 수업 듣다가 벨만포드 알고리즘까지 넘어가서 c++코드를 보고있는데요 vector 기능이 이해가 잘 안가서 질문 드립니다 ㅠㅠ

저는 adj 벡터를 페어를 502개 담을 수 있는 일차원 벡터라고 이해했는데요

21번째 줄은 u번째 인덱스로 접근해서 거기 있는 vector에 페어 { v, w } 를 집어넣어라 라는 뜻이잖아요?

그러데 이게 작동하려면 adj[u] 가 벡터여야 하는데 그렇게 되면 adj는 vector< vector < pair<int, int> > > 이런 형식으로, 벡터를 품고있는 2차원 벡터가 되어야 하는것 아닌가요? 근데 이렇게 코드를 쓰면 오류가 발생하네요

제가 어디를 잘못 이해하고 있는건지 잘 모르겠습니다. 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

저는 adj 벡터를 페어를 502개 담을 수 있는 일차원 벡터라고 이해했는데요

-> 그게 아니고 [pair를 담는 vector]로 이루어진 [크기 502개 짜리 배열]입니다.

vector<vector<pair<int, int>>> adj;
로 선언하고 adj = vector<vector<pair<int, int>>>(502, vector<pair<int, int>>());
뭐 이렇게 동적으로 502개를 만들어도 되지만,
귀찮으니 배열로 502개를 한 번에 만든 것이죠.

ms님의 프로필 이미지
ms
질문자

문법이 자꾸 햇갈리네요 ㅋㅋ ㅠㅠ

감사합니다!

ms님의 프로필 이미지
ms

작성한 질문수

질문하기