我有一個問題,理論上應該從數組中刪除所有重複值的函數不起作用。這是它是如何工作的:刪除陣列中的重複項(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