LZW C++ 简单实现

LZW C++ Simple Implementation

所以我正在尝试用 C++ 制作一个简单的文件压缩器/解压缩器(我的目标不是最好的结果)但我真的被卡住了,因为我充满了疑问,所以他们是:

我应该使用哪种字典(我正在使用地图)? 我应该存储什么样的数据(我使用 String/int 作为 key/value )? 我应该用 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();
    }
}

欢迎对代码提出任何意见!

答案由算法得出,描述可取,例如here

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

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

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

4) "nodes" 是什么意思?

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