因此,我试图在C++中制作一个简单的文件压缩器/解压缩器(我并不是为了获得尽可能好的结果),但我真的被困住了,因为我满脑子都是问题,所以它们就在这里:
我应该用哪种字典(我用的是地图)?我应该存储什么样的数据(我使用字符串/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();
}
}欢迎对代码的任何评论!
发布于 2018-06-13 13:45:32
答案来自于算法,描述可以采取,例如,这里。
1)您需要不断检查输入字符串是否已经存在。您不需要像std::map提供的那样对字符串进行排序,您可以使用std::unordered_map,它使用哈希,效率更高。
2)可以使用字符串/无符号int,因为索引是> 0。
3)是的,从算法描述的初始字典是256个ASCII字符。
4)“节点”是什么意思?
尝试实现本文中描述的内容。提供的样本可以是单元测试。
https://stackoverflow.com/questions/50838393
复制相似问题