首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LZW C++简单实现

LZW C++简单实现
EN

Stack Overflow用户
提问于 2018-06-13 13:23:09
回答 1查看 1.9K关注 0票数 1

因此,我试图在C++中制作一个简单的文件压缩器/解压缩器(我并不是为了获得尽可能好的结果),但我真的被困住了,因为我满脑子都是问题,所以它们就在这里:

我应该用哪种字典(我用的是地图)?我应该存储什么样的数据(我使用字符串/int作为键/值)?我应该用ASCII初始化字典吗?我看到一些人使用节点,这是上帝的方式做到的,是不是很难?

到目前为止,这里的代码并不多:

代码语言:javascript
复制
#define MAX = 1024 //2^10 Where the dictionary reset 

int main(int argc, char *argv[]){
    ifstream in(argv[2], ios_base::binary);
    ofstream of(argv[3], ios_base::binary);
    string str ;
    char c;
    int i;

    if (string(argv[1]) == "-c" ){
        map<string,int> Dic;
        while (in.get(c))
        {   
        }
        in.close();
    }
}

欢迎对代码的任何评论!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-13 13:45:32

答案来自于算法,描述可以采取,例如,这里

1)您需要不断检查输入字符串是否已经存在。您不需要像std::map提供的那样对字符串进行排序,您可以使用std::unordered_map,它使用哈希,效率更高。

2)可以使用字符串/无符号int,因为索引是> 0。

3)是的,从算法描述的初始字典是256个ASCII字符。

4)“节点”是什么意思?

尝试实现本文中描述的内容。提供的样本可以是单元测试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50838393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档