2015-06-02 75 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来代替它,因为这几乎是矢量所做的。