2017-05-20 2 views
0

안녕하세요. 어떻게 말을해야 할 지 모르겠습니다.다른 데이터와 포인터를 연결하는 것

나는 데이터 구조 코스 그래프를 구현 중이다. 그래프는 두 꼭지점 사이의 최단 경로를 찾을 수 있어야합니다. 액터가 정점으로 손상되고 모서리가 배우가 함께 있던 영화입니다.

내 데이터 구조가 빠르기 때문에 특정 액터의 이름을 저장하는 actorNode 클래스를 가질 수 있다고 생각했습니다. actorNode 포인터의 벡터. 벡터의 각 포인터는 두 배우가 함께있는 영화를 나타냅니다. 이 구현 아이디어의 문제점은 두 영화 배우 간의 특정 링크에 모든 영화 정보를 연결하는 방법이 있을까요? 영화 제목과 연도를 모두 저장해야합니다.

마치 맷 데이먼이 영화 (1997)을 위해 Ben Affleck와 연결되어있는 것처럼 말입니다.

Matt Damon의 내 actorNode에는 Ben Affleck의 "link vector"에 ActorNode 포인터가 있습니다. "Good Will Hunting (1997)"을 두 ActorNode 사이의 링크와 연관시키는 간단한 방법이 있습니까?

감사합니다.

+0

포인터 벡터 만 있으면 안됩니다. 모델을 변경해야합니다. – Quentin

답변

0

포인터 값에 추가 정보를 첨부 할 수 없습니다. 문제를 해결하는 두 가지 방법이 있습니다.

접근 방식 1은 데이터베이스 디자인과 유사합니다. 접근 방식 1은 이러한 관계에 대해 별도의 클래스를 도입합니다. class actorsPlayingTogether { Actor *a1; Actor *a2; Movie *m; }과 같은 클래스입니다.

접근법 2는 각 배우의 각 영화에 대해 각 영화를 연결하는 클래스 액터에서지도를 소개하는 것입니다. 따라서 클래스 배우는 class Actor { std::map<Actor &,Movie &> coactors; ...}이 될 수 있습니다. 이로써 빠른 탐색을위한 관련 액터와 각 영화를 모두 얻을 수 있습니다. 단점은 배우와 공동 행위자가 서로를 참조해야하고 양측이 일관성을 유지해야하므로 정보를 중복 저장한다는 것입니다.

두 가지 방법 중 하나가 사용자의 요구에 맞을 수 있기를 바랍니다.