我有一个人口稀疏的矢量,我通过哈希填充,所以元素随机散布在矢量中。现在我想要做的是迭代该向量中的每个元素。我脑海中想到的主要是凝聚矢量以适应当前元素的数量,去除任何空白空间。有什么办法可以做到这一点?有没有一种方法来压缩矢量(C++)?
1
A
回答
1
您可以在插入元素的过程中保存额外需要的信息(例如链接到上一个/下一个元素与链接列表的链接),或者将所有元素传递一遍并删除不必要的信息。
第一种解决方案需要一定的空间(大约8字节/条目),第二种解决方案需要花费所有元素。根据情况,一个或两个可能性可能没有用处。
+0
旁边的空间成本,你也有插入/擦除期间的簿记成本(包括找到上一个/下一个条目)。 – stefaanv 2010-04-01 09:20:04
1
可以使用运行长度编码的版本进行压缩。
您会遍历原始矢量并创建一个新的“压缩”矢量,该矢量包含交替值 - 从原始值开始的值以及到下一个值的空白空间的计数。例如这样的:
3 - - - - 4 - - 7 3 - - - 9 -
变成这样:
3 4 4 2 7 0 3 3 9 1
相关问题
- 1. 有没有一种方法可以压缩Java Try Catch Blocks?
- 2. 用POCO压缩矢量(C++)
- 3. 有没有一种方法来grep或解析一个变量
- 4. 有没有一种简单的方法来使用Objective C在Mac OS X上压缩文件或文件夹?
- 5. 有没有一种方法来评估vba中的变量?
- 6. 有没有一种更加矢量化的方式来沿轴执行numpy.outer?
- 7. C#4.0:有没有一种方法来检查,如果在System.Diagnostics.Process.Start
- 8. 有没有一种方法来优化C++的doxygen?
- 9. 有没有一种方法来合成Objective-C中类变量的setter/getters?
- 10. 有没有一种方法来单元测试异步方法?
- 11. 有没有一种方法来确定在Java方法中使用的变量?
- 12. iPhone:有没有一种方法来loadNumber并有一个reuseIdentifier?
- 13. C++ 11有没有一种方法来静态测试方法访问级别?
- 14. 有没有一种方法来表示函数在GHC的Haskell中显示的解压缩?
- 15. 有没有一种方法来加密/解密使用Bouncy城堡,而不使用压缩
- 16. 有没有一种快速的方法来减少Python中多行的缩进?
- 17. 有没有一种简单的方法来跟踪Firefox变量的JavaScript变量?
- 18. 有没有一种方法来确定语法中的歧义?
- 19. 有没有一种有效的方法来做jQuery切换?
- 20. will_paginate有没有一种方法来设置per_page为“所有”
- 21. 有没有一种有效的方法来确定距离?
- 22. 有没有一种方法来定位前一个元素?
- 23. 有没有一种方法来计算一些不同的值?
- 24. 有没有一种有效的方法来枚举C++中的命名空间?
- 25. 有没有一种简单的方法来获得北约音标字母的矢量?
- 26. 有没有一种系统的方法来将R代码与循环转换为矢量化代码?
- 27. 有没有一种更有效的方法来获得注释的方法?
- 28. 有没有办法使用C#压缩分页的.tiff文件?
- 29. C# - 文件压缩重命名操作或压缩没有GZipStream
- 30. 有没有一种矢量化的方式来操作MATLAB中每列不同数量的值?
这是什么向量?你怎么知道一个元素是否被使用? – 2010-04-01 08:58:33
显然,第一个想法是查看是否可以使用std :: tr1 :: unordered_map(http://www.boost.org/doc/libs/1_36_0/doc/html/boost/unordered_map.html)。它包含迭代器。 – stefaanv 2010-04-01 09:00:42
为什么不使用'unordered_map'? – kennytm 2010-04-01 09:00:44