需要一些关于C ++中简单无损压缩算法的想法

时间:2015-05-11 17:44:20

标签: c++ algorithm stl compression

我正在参加编程课程,其中一项任务是用C ++编写无损压缩程序。我们唯一的限制是我们不能使用STL,静态变量或全局变量。我发现很多压缩算法都需要使用我不允许使用的map / multimap,所以除非我能编写自己的map类并让它工作,否则Huffman编码和LZW几乎是不可能的。

我发现很多算法也使用std :: string,但我完全可以使用cstring(我们可以使用它)。我也可以访问我的教授创建的一些我们可以使用的库。我们可以访问以下内容:

  • 各种树木,如Red-Black,AVL,Splay
  • Binary Heap
  • 各种哈希表,例如几个开放寻址实现,以及单独的链接
  • 矢量,链接列表和队列

除此之外的任何事情我都要为自己编写代码。

有人会推荐任何非常简单的无损压缩算法吗?我在网上发现的霍夫曼和其他压缩算法看起来非常复杂,更不用说我不能在STL中使用map / multimap :(。我不是在寻找绝对最快的算法,只是作为一个起点,我们将根据需要调整它以使其运行更快。

1 个答案:

答案 0 :(得分:2)

  

我发现的许多压缩算法都需要使用我不允许使用的map / multimap,因此Huffman编码和LZW几乎是不可能的

咦?当然不是。映射是一种非常精简的抽象,可以在您的一个树或哈希表实现上实现。

  

除非我可以编写自己的地图类并让它工作

所以这可能就是练习的重点。

继续吧。你可以在装配中做OO。您可以编写没有(现成的)数据结构的算法。这只是更多的工作。而且更容易出错。并且更多教育(我希望:)显然也需要很好的学费)