2011-06-20 7 views
2

まず、これはゲームプロジェクトです。どのSTLコンテナが関連データに使用するのですか?

私は、文字列名、他のメンバー、および「要件」と呼ばれる他のスキルオブジェクトのセットであるメンバーを含む、スキルというオブジェクトを持つ必要があります。 (これは、与えられたスキルが必要とするスキルの前提条件のリストです)

すべてのスキルオブジェクトをどのような種類のSTLコンテナに入れる必要がありますか?ベクター?セット?地図?
このコンテナは、メンバー「要件」のタイプとしても使用されますか?

スキルは一意である必要があります。
私はスキルのセットに何をしようとしていますか?名前で検索し、主にスキルセットを組み合わせて、スキルをセットに追加します。

答えて

9

コンテナの要件を定義する必要はありません。コンテナの要件は、共通の操作と操作の速さによって定義します。

どこかに、フローチャートのような素晴らしい図があり、コンテナの選択をガイドします。私が見つけたら、この答えを更新します。

編集:ここでは、次のとおりです。In which scenario do I use a particular STL container?

+1

これはあなたが探しているものですか? http://stackoverflow.com/questions/471432/in-which-scenario-do-i-use-a-particular-stl-container – GWW

+0

@GWW、それはそうだった、私はそれを分回答。しかし、ありがとう。 –

+0

問題はありませんが、回答を編集している間にコメントしておかなければなりません。 ITはきちんとしたチャートです:) – GWW

1

スキルは一意である必要があります。

最初の印象では、mapまたはsetを使用する必要があります。しかし、これにより、コレクション内の「検索」の柔軟性が低下します。私は単にvectorで始まり、そのベクトルをいくつかのクラスに入れました。そのクラスにはAppendSkillがあり、Skillが既に終了しているかどうかを確認します。追加しない場合、またはfalse/failureを返します。

同じクラスでは、スキル/スキルセットの結合と追加を容易にする必要があります。

+0

あなたはこのことをすべて達成したこのクラスのアイデアを私に多く教えてくれました!ありがとうございました! そして、はい、私は結局ベクトルを使用していることになります。それはあまりにも遅くないことを願っています。 – vedran

+1

ベクターは遅くありません。しかし、それはあなたが特定のデータ要素をどのように "検索"するか、ベクトルに含まれる要素の数に依存します。検索条件には複数の基準があるため、マップを使用してこれらの文字列を保持し、「値」部分はベクトルのイテレータ/インデックスになります。しかし、再度、検索文字列が正確な検索文字列である場合。部分文字列が入ってくる場合は、単にベクトルを検索するほうがよいでしょう。あなたが私のポイントを得ることを願っています。 – Ajay

+0

ベクトルには約1000個のオブジェクトがあります。 部分文字列を検索することはないと思います。だから、私は検索するすべての文字列の別々のマップを持っていて、その値は対応するスキルがベクトル内にあるベクトルインデックスです。それから、私の望むSkillを地図の文字列キーで見つけてください。私はよく分かったのですか? – vedran

関連する問題