私は地図に慣れていないので、これを行う最善の方法が少しわかりません。このタスクは、ハフマン符号による圧縮に関するものです。これが私が持っているものです。
#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];
}
}
上記はオンラインで見つけた方法の 1 つですが、何も印刷できませんでした
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;
}
これは、マップにデータを入力するために試した 2 番目の方法です。char 値は正しくありません。記号とスマイリーフェイスです。
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 メソッドを実行すると、プログラムがクラッシュします。どちらでもエラーは発生しません。2 番目の方法では、char 値は意味がありません。両方の方法を同時に実行していないことに注意してください。
洞察をいただければ幸いです。ありがとうございます。初心者なのでお手柔らかに(;_;)