我是地图新手,所以有点不确定最好的方法。该任务与使用霍夫曼编码的压缩有关。这就是我所拥有的。
#include <map>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
typedef map<char,int> huffmanMap;
void getFreq(string file, map<char, int> map)
{
map.clear();
for (string::iterator i = file.begin(); i != file.end(); ++i) {
++map[*i];
}
}
以上是我在网上找到的一种方法,但无法打印任何内容
int main()
{
map<char, int> huffmanMap;
string fileline;
ifstream myfile;
myfile.open("text.txt",ios::out);
while(!myfile.eof()) {
getline(myfile, fileline); //get the line and put it in the fileline string
}
myfile.close();
我从一个文本文件中读入一个来填充字符串文件行。
for (int i=0; i<fileline.length(); i++) {
char t = fileline[i];
huffmanMap[i]? huffmanMap[i]++ : huffmanMap[i]=1;
}
这是我尝试填充地图的第二种方法,字符值不正确,符号和笑脸..
getFreq(fileline,huffmanMap);
huffmanMap::iterator position;
for (position = huffmanMap.begin(); position != huffmanMap.end(); position++) {
cout << "key: \"" << position->first << endl;
cout << "value: " << position->second << endl;
}
这就是我尝试打印地图的方式
system("pause");
return 0;
}
当我运行我的 getFreq 方法时,程序崩溃了。我没有得到任何错误。使用第二种方法,char 值是无意义的。注意我没有同时运行这两种方法,我只是将它们都包含在内以显示我尝试过的内容。
任何见解将不胜感激。谢谢。对初学者宽容一点;)