64,637
社区成员
发帖
与我相关
我的任务
分享
for(j=i+1;j!=v.size(); /*这里不进行自增操作*/)//查找子表即i+1~v.size-1范围
{
cout<<"v[j]="<<v[j]<<" "<<"v[i]="<<v[i]<<endl;
if(v[i]==v[j])
{
for(int k=j;k!=v.size()-1;k++)
{
v[k]=v[k+1];//将j以后的元素往左移
}
v.pop_back();//删除最后一个元素
}
else
{
// 没有重复才继续增加,否则从原来位置继续查找
// 比如 {1, 1, 1, 2 }当j == 1,删除第二个1变为 {1, 1, 2}
// 假如你j++操作j == 2,则会跳过新数列的第二个1,
// 然后跟元素2进行判断,会导致你最终结果为 {1, 1, 2}
// PS:新的数列导致你位置向前移动一个位置,所以必须从原来开始位置再次查找
j++;
}