개체에 대한 포인터를 해당 ID로 저장하는지도가 있습니다. 지도에서 첫 번째로 사용 가능한 키를 가져옵니다.
typedef std::map<unsigned int, Entity*> entityMap;
entityMap entitymap;
난 그냥 entitymap의 최신 값을 가지고 1
Entity *entity = new Entity;
entity->id = /*newest entity+1*/;
entitymap.insert(std::pair<unsigned int,Entity*>(entity->id,entity));
하여 증가시킬 수 엔티티에 ID를 할당하려면 그러나 모든 이제 다음 엔터티이기 때문에 수는 불필요하게 큰이 될 수 삭제되고지도에서 제거됩니다.
std::map<unsigned int,Entity*>::iterator it;
it = entitymap.find(EntityID);
if(it != entitymap.end())
{
Entity *entity= it->second;
entitymap.erase(it);
}
delete entity;
그래서이 값들을 보유한지도를 가질 수 있습니다.
1,2,4,8,10
어떤 경우에는 내가 ID
3
항에 다음 엔티티를하고 싶습니다.
그냥 생각 : 32 비트 정수 (초)에 대한 136년만큼 큽니다. ID가 충분하지 않습니까? :) – jrok
큰 정수가 작은 것보다 더 많은 공간을 차지하지 않습니까? – natli
아니요, 32 비트 정수는 메모리의 32 비트 (대부분의 컴퓨터에서 4 바이트)를 취하고 그 값이 0, 1000 또는 100 백만인 경우 중요하지 않습니다. – jrok