我需要知道如何通过它们的名称或编号(或者我可以通过特定父项中的每个项目循环的任何内容)索引不同类型的对象,或者是否有任何其他方法可以处理大量对象不喜欢。
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);
}