LZW C ++简单实现

时间:2018-06-13 13:23:10

标签: c++ lzw

所以我试图在C ++中创建一个简单的文件压缩器/解压缩器(我不是为了获得最好的结果)但是我真的被卡住了,因为我充满了疑问,所以他们在这里:

我应该使用哪种字典(我正在使用地图)? 我应该存储什么样的数据(我使用String / int作为键/值)? 我应该用ASCII初始化字典吗? 我看到有些人使用节点它是一种上帝的方式来做它难吗?

这是迄今为止的代码:

#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();
    }
}

欢迎对代码发表任何评论!

1 个答案:

答案 0 :(得分:2)

答案来自算法,可以进行描述,例如here

1)如果输入字符串已经存在,您需要不断检查。你不需要std :: map提供的字符串顺序,你可以使用使用hash的std :: unordered_map,效率更高。

2)你可以使用string / unsigned int,因为索引是&gt; 0

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

4)节点&#34;是什么意思?

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