• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

STL vector 질문

21.03.22 21:49 작성 조회수 249

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개를 한 번에 만든 것이죠.

ms님의 프로필

ms

질문자

2021.03.22

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

감사합니다!