C++ 在C+中,如何为增加但记住删除以前对象的对象分配唯一标识符+; 1.问题

C++ 在C+中,如何为增加但记住删除以前对象的对象分配唯一标识符+; 1.问题,c++,C++,我希望每个对象都有一个唯一的ID,但是,使用这段代码,ID会增加,但不会减少。如何根据存在的对象的编号拥有唯一的ID 2.代码 #包括 #包括 类唯一{ 受保护的: 静态int nextID; 公众: int-id; 唯一性(); ~UniqueID(); UniqueID(const UniqueID和orig); UniqueID和操作符=(const UniqueID和orig); }; int UniqueID::nextID=0; UniqueID::UniqueID(){ id=++

我希望每个对象都有一个唯一的ID,但是,使用这段代码,ID会增加,但不会减少。如何根据存在的对象的编号拥有唯一的ID

2.代码
#包括
#包括
类唯一{
受保护的:
静态int nextID;
公众:
int-id;
唯一性();
~UniqueID();
UniqueID(const UniqueID和orig);
UniqueID和操作符=(const UniqueID和orig);
};
int UniqueID::nextID=0;
UniqueID::UniqueID(){
id=++nextID;
}
UniqueID::~UniqueID(){
}
UniqueID::UniqueID(const UniqueID和orig){
id=原始id;
}
UniqueID和UniqueID::operator=(const UniqueID和orig){
id=原始id;
返回(*本条);
}
int main()
{
std::向量唯一性;
对于(int i=0;i<3;i++)
{
唯一的e;
唯一性。推回(e);

std::coutID通常不会像这样重复使用是有原因的,这是因为您必须保留一个备用ID的集合,或者一个已用ID的集合,并且不可扩展(除非您人为地将自己限制在少量的“插槽”)


数据库只需自动递增到整数范围的顶部,然后返回(不太可能同时拥有40亿个对象!)。在代码中,通常只使用对象的地址,这已经保证在其生命周期中是唯一和稳定的。

我不知道在哪里可以减少反计算?您需要保留ID的静态
向量,并在构造函数中删除已删除的ID,以便可以重用它们。为什么不这样做使用每个元素的地址/索引作为其id?复制现有对象的id会使其不唯一。
Create 1
Create 2
Create 3

Delete 3
Delete 2
Delete 1

Create 4
Create 5
Create 6
Create 1
Create 2
Create 3

Delete 3
Delete 2
Delete 1

Create 1
Create 2
Create 3