所以我试图在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();
}
}
欢迎对代码发表任何评论!
答案 0 :(得分:2)
答案来自算法,可以进行描述,例如here。
1)如果输入字符串已经存在,您需要不断检查。你不需要std :: map提供的字符串顺序,你可以使用使用hash的std :: unordered_map,效率更高。
2)你可以使用string / unsigned int,因为索引是&gt; 0
3)是的,从算法描述初始字典是256个ASCII字符。
4)节点&#34;是什么意思?
尝试实现本文中描述的内容。提供的样本可以是单元测试。