所以现在我有这样的东西(过于简单):
class Person
{
unsigned int ID:
........
};
class ClassManager
{
std::vector<Person*> _Persons;
Person* create()
{
Person* person = new Person();
unsigned int id = _Persons.size();
person->ID = id;
_Persons.push_back(person);
}
Person* get(unsigned int ID)
{
return _Persions[ID];
}
};
我想知道这样的事情是否会更有效:
class ClassManager
{
static const unsigned int DEFAULT_COUNT = 4
Person* memoryPool;
unsigned int count;
unsigned int index;
void init()
{
memoryPool = new Person[DEFAULT_COUNT];
count = DEFAULT_COUNT;
index = 0;
}
Person* create()
{
Person* person = &memoryPool[index];
person->ID = index;
index += 1;
return person;
}
Person* get(unsigned int ID)
{
return &memoryPool(ID);
}
};
....然后如果我需要更多人,我会调整 memoryPool 的大小。同样,这只是我计划制作的一个非常简化的版本。我只有一堆这些对象和每个对象的对象管理器,并且为每个对象管理器拥有一个内存池可能更有效,而不是动态创建每个单独的对象(可能有数百个)。
这会是更好的方法吗?谢谢。