2016-03-20 2 views
0

非常にうまく書かれていない教科書で抱かれているという不満がありました。それが現れて、私はC++を楽しんでから物理的に病気になったことに気づきました。しかし、私はクラスを終了することを拒否します。だから私は、次のような質問をするラボを持っています。マルチセットと配列についてのC++

アクターとロールという、それぞれサイズNの2つの配列を含むプログラムを記述します。アクター[i]は、 actorの名前とroles [i]は、俳優が登場した映画の名前を含む文字列のマルチセットです。これらの配列の初期情報は、設計した形式のファイルから読み込まれます。プログラムが実行されると、ユーザーはアクターの名前を入力し、そのアクターのすべてのムービーのリストを受け取ることができます。あるいは、ユーザはムービーの名前を入力し、そのムービー内のすべてのアクタのリストを受け取ることができる。

今、私は答えを望んでいません。私は、どんな方向に向かうべきかを知る必要があります。私は標準的な配列ではかなり快適だと思っていますが、このテキストにマルチセットが記述されている方法は私を混乱させてしまいます。どんな援助も(私に答えを与えるだけではなく)感謝するでしょう。

+0

データベース理論では、これは多ければ多いほど多くのマッピングと呼ばれます。 –

+0

findメソッドは特定のメンバーを見つけます。countメソッドは特定のキーを持つ要素を数えます。 –

+0

マルチセット(C++標準ライブラリでは、少なくとも、普通の使い方では思うが)は繰り返し要素を持つことができるセットです。 C++(マルチ)集合は順序付けされているため、実際の数学的集合ではありません。 C++ 11以降、標準ライブラリにはunordered_setsとunordered_multisetsも含まれています。マルチセットのアイデアは奇妙に思えるかもしれませんが、C++(マルチ)セットは任意の関数を使用して等価関係を定義するオブジェクトを比較できることを覚えておくと便利です。私はまだ 'roles [i]'がセットではなくマルチセットになる理由を見ていません。(同じ映画の中で俳優が2回出演することはできますか?) – rici

答えて

0

フィルムの俳優をつなぐ第3の補助マルチセットを持つ方法です。

この3番目のセットは、一意の整数のペアを含む必要があります。ユーザーがアクター 'wayne'を選択すると、最初のステップで整数のペア(actor_id、movie_id)の補助サブセットを作成し、各アクターは一意の整数IDを持ち、各ムービーは固有の整数IDを持ち、次にこのセットを反復して、これらのキーに値を入力します。

逆の場合:ユーザーが再び「rawhide」というフィルムを選択すると、整数のサブセットが作成され、これを繰り返してすべてのアクターをこれらのキーの値として検索します。

詳細については、「多対多の関係」を参照してください。

+0

テーブルをセットに置き換えるのに役立ちます:http:// docs .oracle.com/cd/E23507_01/Platform.20073/RepositoryGuide/html/s0608manytomanyrelationships01.html ** –