删除数组成员的更好方法是哪种?

时间:2017-05-08 02:09:06

标签: c++ arrays oop

我正在学习OOP,所以我必须与数组交互,而不是链接列表。我有数据排序。问题是删除数组的成员(让我们称之为DL)。我提出的第一种方法是从i+1i覆盖数据,从DL索引开始,并将读数减少1.后来我发现我可以将DL与最后一个成员交换,然后将计数变量减少1.但是,我必须再次对数据进行排序。哪一个更好?

1 个答案:

答案 0 :(得分:3)

如果它需要保持分类,我说最好通过在目标之后移动每个元素来覆盖它。将其与end元素交换然后求助将需要更多工作,因为交换需要三个操作:

1)将元素1复制到临时变量。 2)将元素2复制到元素一。 3)将temp元素复制到元素二。

这需要在排序算法中重复多次。如果您正在使用每个具有多个私有数据成员的结构或类的对象数组,则工作负载会增加更多。

每次迭代时,覆盖采取的移动次数更少:

1)将i + 1复制到i

所以,Id肯定会通过将所有元素移回一个并将计数减少一个来进行覆盖。

无论如何,使用您的特定数据集,最好同时计算两者,并查看哪一个更快。通过计算实现的开始和结束之间的毫秒数,这非常简单。