【问题标题】:Need some ideas for simple lossless compression algorithms in C++需要一些关于 C++ 中简单无损压缩算法的想法
【发布时间】:2023-04-07 05:25:02
【问题描述】:

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

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

  • 红黑、AVL、Splay等各种树
  • 二进制堆
  • 各种哈希表,例如几个开放寻址实现,以及单独的链接
  • 向量、链表和队列

所以除了上面的任何东西我都得自己写代码。

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

【问题讨论】:

  • 你可以使用cstring吗?请展开...
  • LZW。没有比这更简单的了,它可以使用哈希表非常有效地实现。 P.S. 如果你的教授不允许你在 C++ 编程项目中使用 STL 和其他广泛使用的库,那他一定是愚蠢的。
  • 你上什么课?没有 ++ 的糟糕编程 201 C++
  • 如果你不能使用 std::mapstd::multimap 是什么阻止你实现一个非常基本的版本来完成工作?
  • 可能从 RLE 开始用于 BMP 图像,LZW 用于可执行文件。课程用马。与在这里冗长的评论聊天相比,稍微使用一下您最喜欢的搜索引擎可能会更快地为您提供更好的想法。

标签: c++ algorithm stl compression


【解决方案1】:

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

嗯?当然不是。地图是一种非常薄的抽象,可在您的树或哈希表实现中实现。

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

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

请继续。您可以在汇编中执行 OO。您可以编写没有(现成的)数据结构的算法。这只是更多的工作。而且更容易出错。而且更有教育意义(我希望 :) 显然也需要好的学费)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多