有没有办法压缩矢量(C ++)?

时间:2010-04-01 08:52:53

标签: c++ vector loops

我有一个人口稀疏的矢量,我通过散列填充,因此元素在矢量中随机散布。现在我想要做的是迭代该向量中的每个元素。我的想法基本上是压缩矢量以适应存在的元素数量,去除任何空白空间。有没有办法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以在插入元素期间保存额外需要的信息(例如,链接到上一个/下一个元素与链接列表相比),或者您对所有元素进行一次传递并删除不必要的元素。

第一种解决方案需要花费一些空间(大约8个字节/条目),第二个解决方案需要花费一遍所有元素。根据具体情况,一种或两种可能性可能没用。

答案 1 :(得分:1)

您可以使用游程编码的版本压缩 您将遍历原始矢量并创建一个新的“压缩”矢量,其中包含交替值 - 原始值和空白空间的值到下一个值。例如:

3 - - - - 4 - - 7 3 - - - 9 -

转向:

3 4 4 2 7 0 3 3 9 1