작성
·
309
0
제가 유니티, c# 자료구조 수업 듣다가 벨만포드 알고리즘까지 넘어가서 c++코드를 보고있는데요 vector 기능이 이해가 잘 안가서 질문 드립니다 ㅠㅠ
저는 adj 벡터를 페어를 502개 담을 수 있는 일차원 벡터라고 이해했는데요
21번째 줄은 u번째 인덱스로 접근해서 거기 있는 vector에 페어 { v, w } 를 집어넣어라 라는 뜻이잖아요?
그러데 이게 작동하려면 adj[u] 가 벡터여야 하는데 그렇게 되면 adj는 vector< vector < pair<int, int> > > 이런 형식으로, 벡터를 품고있는 2차원 벡터가 되어야 하는것 아닌가요? 근데 이렇게 코드를 쓰면 오류가 발생하네요
제가 어디를 잘못 이해하고 있는건지 잘 모르겠습니다.
답변 1
0
저는 adj 벡터를 페어를 502개 담을 수 있는 일차원 벡터라고 이해했는데요
-> 그게 아니고 [pair를 담는 vector]로 이루어진 [크기 502개 짜리 배열]입니다.
vector<vector<pair<int, int>>> adj;
로 선언하고 adj = vector<vector<pair<int, int>>>(502, vector<pair<int, int>>());
뭐 이렇게 동적으로 502개를 만들어도 되지만,
귀찮으니 배열로 502개를 한 번에 만든 것이죠.
문법이 자꾸 햇갈리네요 ㅋㅋ ㅠㅠ
감사합니다!