私はオブジェクト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;
私はこれらの値を保持するマップを持つことができました。私は次のエンティティID 3
を主張したいと思います
1,2,4,8,10
その場合
。
だけの思考:32ビット整数は秒のおよそ136年間の十分な大きさです。あなたがIDのために十分に大きくないと確信していますか? :) – jrok
大きな整数は小さなものより多くのスペースを占有しませんか? – natli
いいえ、32ビット整数は32ビットのメモリ(ほとんどのコンピュータでは4バイト)をとりますが、その値が0,1000、または100億の場合は問題ありません。 – jrok