У меня есть карта, в которой указатели на объект хранятся по их идентификатору.
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));
Но число может стать неоправданно большим, потому что время от времени сущность удаляется и удаляется с карты.
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
В таком случае я бы хотел, чтобы следующая организация потребовала идентификатор 3
.