名前または番号のいずれかで異なるタイプのオブジェクトにどのようにインデックスを付けるかを知る必要があります(または、特定の親のすべてのアイテムをループできるものは何でも)または、大量のオブジェクトを処理するためにできる他の方法はありますか?好きなことをせずに。
obj1.blah = blah
obj2.blah = blah
名前または番号のいずれかで異なるタイプのオブジェクトにどのようにインデックスを付けるかを知る必要があります(または、特定の親のすべてのアイテムをループできるものは何でも)または、大量のオブジェクトを処理するためにできる他の方法はありますか?好きなことをせずに。
obj1.blah = blah
obj2.blah = blah
マップを使用すると、連想配列を作成できます。つまり、文字列名を介してオブジェクトのさまざまなインスタンスを参照できます。
#include <map>
class ObjectType {
public:
void DoSomething()
{
std::cout << "Did something\n";
};
};
std::map<std::string, ObjectType> objects;
objects["object1"] = ObjectType();
objects["object2"] = ObjectType();
objects["object2"].DoSomething();
...
C ++で多くのオブジェクトを処理する標準的な方法は、コンテナを使用することですvector
。
#include <vector>
#include "MyObject.hpp" // contains your object type definition
int main()
{
std::vector<MyObject> v = populate_container_with_objects();
これで、非常に簡単に繰り返すことができます。
for (auto & ob : v)
{
do_something_useful_with(ob);
}
}
古いコンパイラでは、次のように言う必要があります。
for (std::vector<MyObject>::iterator it = v.begin(), end = v.end(); it != end; ++it)
{
do_something_useful_with(*it);
}