2015-06-02 79 views
-1

我不知道存儲在數組中的數字[多維]。當我從傳感器獲取這些數字時。我只知道如果相同的數字重複超過5次次,該數字應該刪除。 請幫忙。如何刪除C++中的數組中的特定元素

+0

創建後,數組的大小是固定的。您必須將該值設置爲「無效」值(例如,如果所有正確的值都是正值,則爲-1),或者創建刪除元素的新數組(但它很少使用多維數組)。還要檢查*數組的數組*(它與多維數組不相同)。 – SJuan76

+0

你不知道數字?我不太明白。只需在屏幕上打印它們即可看到它們。然後你必須意識到「同樣的數字」對於浮動或雙倍有點棘手。不要檢查等號('a == b'),而是使用一些合理的界限(即'abs(a-b) user463035818

+0

感謝sjuan76,但這不能回答我的問題。 –

回答

0

如何從一個數組

取決於你的意思是「刪除」確實刪除了具體內容。一組x數字總是有x的數字。一個整數不能有一個代表「已刪除」數字的狀態,除非您決定某個特定值表示這種狀態。如果僅使用正值,則典型選擇是-1。浮點數可以設置爲NaN,但考慮到「重複5次」的要求,請記住浮點數的平等比較並不是微不足道的。

或者,您可以維護一個重複的布爾數組,它表示相應索引中的數字是否已被刪除。

另一種方法是用指向最後一個「used」數字的指針(或者說,指向最後使用的數字後面的那個)來增加數組。這使您可以表示比適合整個陣列更小的(動態)數組。這種動態數組的大小應該是第一個數字的地址和指針之間的距離,並且大小可以改變到x。指針之外的數字將被視爲刪除。您必須注意不要訪問刪除的數字,認爲它們將包含有效數據。如果要刪除數組中間的數字,只需將所有數字複製到一個索引後面,然後減少指針。如果你不想自己實現這個(你不應該這麼做),你可能會想用std::vector來代替它,因爲這幾乎是矢量所做的。