64,650
社区成员
发帖
与我相关
我的任务
分享
vetor<CString> vcstr;//本容器已经初始化,内容为足够大的字典序CString集合
//要求:
//把vcstr中的顺序打乱。
vetor<bool> vbool;
vetor<CString>::iterator vcit;
for(vcit=vcstr.begin();vcit!=vcstr.end();vcit++)
vbool.push_back(false);
vetor<bool>::iterator vbit;
len=vcstr.size();
CString pick;
CString put;
while(len>0){
rNum=ran()%len;//产生0到len-1的随机数
vbit=vbool.begin();
for(vcit=vcstr.begin();vcit!=vcstr.end();vcit++){
if(0==rNum){
vbit=true;
pick=*vcstr;
if(""!=put)
*vcstr=put;
put=pick;
break;
}
if(*vbit)
continue;
else
rNum--;
}
len--;
}
vetor<bool> vbool;
vetor<CString>::iterator vcit;
for(vcit=vcstr.begin();vcit!=vcstr.end();vcit++)
vbool.push_back(false);
vetor<bool>::iterator vbit;
len=vcstr.size();
CString pick;
CString put;
while(len>0){
rNum=ran()%len;//产生0到len-1的随机数
for(vcit=vcstr.begin();vcit!=vcstr.end();vcit++){
if(0==rNum){
vbit=true;
pick=*vcstr;
if(""!=put)
*vcstr=put;
put=pick;
break;
}
}
len--;
}
bool cmp(){
l=rand();
r=rand();
return l<r;
}
sort(vcstr.begin(),vcstr.end(),cmp);//经检验,会越界