我有一个人口稀疏的矢量,我通过散列填充,因此元素在矢量中随机散布。现在我想要做的是迭代该向量中的每个元素。我的想法基本上是压缩矢量以适应存在的元素数量,去除任何空白空间。有没有办法可以做到这一点?
答案 0 :(得分:1)
您可以在插入元素期间保存额外需要的信息(例如,链接到上一个/下一个元素与链接列表相比),或者您对所有元素进行一次传递并删除不必要的元素。
第一种解决方案需要花费一些空间(大约8个字节/条目),第二个解决方案需要花费一遍所有元素。根据具体情况,一种或两种可能性可能没用。
答案 1 :(得分:1)
您可以使用游程编码的版本压缩 您将遍历原始矢量并创建一个新的“压缩”矢量,其中包含交替值 - 原始值和空白空间的值到下一个值。例如:
3 - - - - 4 - - 7 3 - - - 9 -
转向:
3 4 4 2 7 0 3 3 9 1