如何在c ++中删除数组中的特定元素

时间:2015-06-02 07:18:39

标签: c++ multidimensional-array

我不知道存储在数组中的数字[多维]。我从传感器获取这些数字。我只知道如果相同的数字重复超过5次,那么该数字应该被删除。 请帮忙。

1 个答案:

答案 0 :(得分:0)

  

如何从数组中删除特定元素

取决于“删除”是什么意思。 x个数字的数组始终具有完全x个数字。除非您确定特定值表示此类状态,否则整数不能具有表示“已删除”数字的状态。如果仅使用正值,则典型的选择是-1。浮点数可以设置为NaN,但考虑到“重复5次”的要求,请记住浮点数的相等比较并不简单。

或者,您可以维护一个重复的bool数组,表示相应索引中的数字是否已被删除。

另一种方法是使用指向最后一个“已使用”数字的指针来扩充数组(或者更确切地说,指向最后一个使用过的数字之后的数字)。这允许您表示一个较小的(动态)数组,而不是适合整个数组。这种动态数组的大小将是第一个数字的地址与指针之间的距离,大小可能会变为x。超出指针的数字将被视为已删除。您必须注意不要访问已删除的数字,认为它们包含有效数据。如果要删除数组中间的数字,只需将一个索引后面的所有数字复制到左侧并递减指针。如果你不想自己实现这个(并且你不应该这样做),你可能想要使用std::vector,因为这几乎就是矢量所做的事情。