2017-05-20 1 views
0

こんにちは。他のデータとポインタを関連付ける

私は自分のデータ構造のグラフを作成しています。グラフは、2つの頂点間の最短経路を見つけることができる必要があります。グラフは、俳優が頂点として損なわれ、エッジが俳優が一緒になっていた映画です。

私は自分のデータ構造が速いと思っていましたので、actorNodeクラスを持つことができました。 actorNodeポインタのベクトル。そのベクトルの各ポインタは、それらの2人のアクターが一緒にいた映画を表しています。この実装のアイデアに関する私の問題は、すべての映画情報を2人の俳優の間の特定のリンクに関連付ける方法があるだろうか?私は映画のタイトルと年の両方を保存する必要があります。

マット・デイモンが映画「グッド・ウィル・ハンティング」(1997年)のためにベン・アフレックとリンクしていたような感じです。

Matt Damonのmy actorNodeには、Ben Affleckの "link vector"にActorNodeポインタがあります。 2つのActorNodes間のリンクに「Good Will Hunting(1997)」を関連付ける簡単な方法はありますか?

ありがとうございました!

+0

ポインタのベクトルだけではなく、いいえ。モデルを変更する必要があります。 – Quentin

答えて

0

ポインタ値に追加情報を付加することはできません。 私はあなたの問題を解決する2つの方法を見ています:

アプローチ1は、このような関係のために別のクラスを導入するデータベース設計に似ています。 class actorsPlayingTogether { Actor *a1; Actor *a2; Movie *m; }のようなクラスです。

アプローチ2は、それぞれの共演者のそれぞれの映画を関連付けるクラスactorにマップを導入することです。したがって、クラスの俳優はclass Actor { std::map<Actor &,Movie &> coactors; ...}になる可能性があります。これにより、それぞれの映画だけでなく、高速なトラバーサルのために関連するアクターを取得することができます。欠点は、俳優と共演者の両方がお互いを参照する必要があり、両者が一貫している必要があるため、情報を重複して保存することです。

両方のアプローチのどちらかがあなたのニーズに合っていますか?

関連する問題