Получить первый доступный ключ в карте

У меня есть карта, которая хранит указатели на объект по их 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.

5
задан natli 2 January 2012 в 00:32
поделиться