У меня есть карта, которая хранит указатели на объект по их ID.
typedef std::map<unsigned int, Entity*> entityMap;
entityMap entitymap;
Чтобы присвоить ID сущности, я мог бы просто взять самое новое значение в entitymap и увеличить его на 1.
Entity *entity = new Entity;
entity->id = /*newest entity+1*/;
entitymap.insert(std::pair<unsigned int,Entity*>(entity->id,entity));
Но число может стать неоправданно большим, потому что время от времени сущность удаляется из карты.
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
.