我有一个问题,理论上应该从数组中删除所有重复值的函数不起作用。这是它是如何工作的:删除阵列中的重复项(C++)
- 我有两个数组,然后我用它们填充0到50之间的随机数 。
- 余数组值,以便使用排序函数
- 我然后运行我的重复数据删除功能
- 余数组值,以便再次
- 我然后输出的值在两个数组排序排序
问题是,重复数据删除功能中的循环运行了19次,无论它找到了多少重复条目,这非常奇怪。而且,它仍然会给出重复的内容。
任何想法?谢谢!
int* dedupe(int array[ARRAY_SIZE]) //remove duplicate array values and replace with new values.
{ bool dupe = false;
while(dupe!=true)
{
for(int j=0; j<ARRAY_SIZE; j++)
{ if(array[j] == array[j+1])
{ array[j] = rand();
array[j] = array[j] % 51;
dupe = false;
}
else { dupe = true; // the cout part is for debugging
cout << dupe << endl; }
}
} return array;
}
int main()
{
int a[9], b[9];
srand(time(0));
populate(b);
populate(a);
sort(a,ARRAY_SIZE);
sort(b,ARRAY_SIZE);
dedupe(a);
dedupe(b);
sort(a,ARRAY_SIZE);
sort(b,ARRAY_SIZE);
for(int i=0; i<10; i++)
{ cout << "a[" << i << "] = " << a[i] << "\t\t" << "b[" << i << "] = " << b[i] << endl; }
return 0;
}
到目前为止没有任何建议解决了这个问题。有谁知道解决方案?
你可能想看看'std :: unique':http://www.cplusplus.com/reference/algorithm/unique/ – chris 2012-04-20 22:43:54
如何用一个随机数字替换一个重复的应该删除重复? [你需要什么](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)的数字? – outis 2012-04-20 22:50:06
这是一个很好的观点。我不确定用什么来替换它,而不是一个随机数,因为数组本身在最后和重复数据删除之后仍然应该用随机数填充...... 此外,while循环运行,直到没有更多的重复值被发现,因此它删除重复的数字 - 理论上至少。 – 2012-04-20 22:53:44