0

私は現在、作成中のゲームの地面を構成するすべてのブロックのオブジェクトを作成するために使用されるクラスの地面を持っています。このやや大きなブロックのリストを追跡する最善の方法は何ですか? Python でオブジェクトを追跡する方法は知っていますが、最近 C++ に移行したため、反復処理が簡単なある種のリストを設定する方法がわかりません。

4

1 に答える 1

5

C++ では、標準ライブラリ (標準テンプレート ライブラリとも呼ばれます) は、もののコレクションを格納するいくつかのコンテナー クラスを提供します。「もの」は、基本的なものやユーザー定義のものを含め、任意のデータ型にすることができます。

どのコンテナを使用するかは、ニーズによって異なります。Microsoft からの信頼できる記事を次に示します。

vectorコンテナ内の位置によって特定の要素を参照する機能が必要なset場合、または要素の順序が重要ではなく、特定の要素が存在するかどうかをすばやく確認できるようにする必要がある場合は、 を使用するのが最善の策です。 .

いくつかの例:

vector<MyClass> mycontainer; // a vector that holds objects of type MyClass
MyClass myObj;
mycontainer.push_back(myObj);
cout << mycontainer[0] << endl; // equivalent to cout << myObj << endl;

またはセットを使用して:

set<MyClass> mycontainer;
MyClass myObj;
mycontainer.insert(myObj);
if (mycontainer.find(myObj))
   cout << "Yep, myObj is in the set." << endl;

究極のコンテナがない理由は、効率のトレードオフがあるからです。あるコンテナは、その中に要素が存在するかどうかを非常に高速に識別できますが、別のコンテナは、任意の要素などを削除するのに最適です。

したがって、最善の策は、コンテナーでサポートする動作 (およびその効率性) を検討してから、以前にリンクした信頼できる記事を確認することです。

于 2013-03-01T00:13:24.100 に答える