C++ 尝试重构后陷入while循环

C++ 尝试重构后陷入while循环,c++,C++,我试图清理一个循环以使其更干净,但之后,它会卡在而循环中。我试图改变检查集合的方法,但没有成功 原始工作代码: unsigned seed=system_clock::now().time_since_epoch().count(); minstd_rand0发生器(种子); int BagNum=(生成器()%1000); color=bagcolors[generator()%5]; 字符串BagCode=to_字符串(BagNum)+“-”+颜色; 如果(!BagIDs.count(Bag

我试图清理一个循环以使其更干净,但之后,它会卡在
循环中。我试图改变检查
集合的方法,但没有成功

原始工作代码:

unsigned seed=system_clock::now().time_since_epoch().count();
minstd_rand0发生器(种子);
int BagNum=(生成器()%1000);
color=bagcolors[generator()%5];
字符串BagCode=to_字符串(BagNum)+“-”+颜色;
如果(!BagIDs.count(BagCode)){//工作代码
BagID.插入(BagCode);
返回行李编码;
}else{//找到重复项,重新生成代码
字符串错误代码;
做{
badcode=BagCode;
BagCode.clear();
BagNum=(生成器()%1000);
color=bagcolors[generator()%5];
BagCode=to_字符串(BagNum)+“-”+颜色;
}while(badcode==BagCode);
BagID.插入(BagCode);
返回行李编码;
}
清理尝试:

字符串BagCode,颜色;
而(!BagIDs.count(BagCode)){
无符号种子=系统时钟::now().time_自_epoch().count();
minstd_rand0发生器(种子);
int BagNum=(生成器()%1000);
color=bagcolors[generator()%5];
字符串BagCode=to_字符串(BagNum)+“-”+颜色;
}
完整方法:

string genBagCode(){
静态无序集BagIDs;
字符串bagcolors[5]={“ORG”、“BLK”、“GRN”、“BLU”、“YLW”};
字符串、代码、颜色;
而(!BagIDs.count(BagCode)){
无符号种子=系统时钟::now().time_自_epoch().count();
minstd_rand0发生器(种子);
int BagNum=(生成器()%1000);
color=bagcolors[generator()%5];
字符串BagCode=to_字符串(BagNum)+“-”+颜色;
}
BagID.插入(BagCode);
/*
如果(!BagIDs.count(BagCode)){//工作代码
BagID.插入(BagCode);
返回行李编码;
}else{//找到重复项,重新生成代码
字符串错误代码;
做{
badcode=BagCode;
BagCode.clear();
BagNum=(生成器()%1000);
color=bagcolors[generator()%5];
BagCode=to_字符串(BagNum)+“-”+颜色;
}while(badcode==BagCode);
BagID.插入(BagCode);
返回行李编码;
}
*/
返回行李编码;
}

看起来您没有添加到while循环中的BagIDs列表中。因此,计数始终为0。我认为BagIDs.insert(BagCode)代码应该在上一个大括号的上方。

首先,您不应该每次都生成一个随机数生成器。一个就够了。将其移出循环。