Tôi có một bản đồ lưu trữ con trỏ đến một đối tượng bằng ID của chúng.Lấy khóa có sẵn đầu tiên trong bản đồ
typedef std::map<unsigned int, Entity*> entityMap;
entityMap entitymap;
Để gán một ID để Entity Tôi chỉ có thể lấy giá trị mới nhất trong entitymap và tăng nó bằng 1.
Entity *entity = new Entity;
entity->id = /*newest entity+1*/;
entitymap.insert(std::pair<unsigned int,Entity*>(entity->id,entity));
Nhưng số lượng có thể trở thành không cần thiết lớn vì tất cả bây giờ và sau đó là một thực thể là đã xóa và xóa khỏi bản đồ.
std::map<unsigned int,Entity*>::iterator it;
it = entitymap.find(EntityID);
if(it != entitymap.end())
{
Entity *entity= it->second;
entitymap.erase(it);
}
delete entity;
Vì vậy, tôi có thể có bản đồ chứa các giá trị này;
1,2,4,8,10
Trong trường hợp này, tôi muốn Pháp nhân tiếp theo yêu cầu ID 3
.
Chỉ cần một ý nghĩ: a 32-bit số nguyên là đủ lớn cho khoảng 136 năm giây. Bạn có chắc nó không đủ lớn cho ID của bạn không? :) – jrok
Không phải là một số nguyên lớn chiếm nhiều không gian hơn một không gian nhỏ? – natli
Không, số nguyên 32 bit mất, tốt, 32 bit bộ nhớ (4 byte trên hầu hết các máy tính), không quan trọng nếu giá trị của nó là 0, 1000 hoặc 100 milion. – jrok