我以前很少使用 STL,但我开始使用这个霍夫曼压缩项目。除了“for_each”函数之外,一切似乎都有效,除了函数参数之外,它不会。由于我通常不使用 xcode(我通常使用 eclipse cdt),我不确定问题出在我的代码还是 xcode。
这是 Huff.h 文件
class Huff {
private:
typedef pair<char, int> c_pair;
vector<Node> nodes;
vector<Code> code;
string content;
void copy_to(c_pair c);
public:
Huff(string);
~Huff();
string compress();
bool set_content();
string get_content();
string get_compress();
};
这是 Huff.cpp 文件中不起作用的部分。
//---Compress---
void Huff::copy_to(c_pair c){
Node n(c.second, c.first, NULL, NULL);
nodes.push_back(n);
}
string Huff::compress(){
map<char, int> freq;
for(int i = 0; i < content.length(); i++)
freq[content[i]]++;
for_each(freq.begin(), freq.end(), copy_to); //I've also tried this->copy_to
return "110";
}