Я пытаюсь реализовать собственный алгоритм кодирования Хаффмана, и очередь приоритетов для C ++ STL, похоже, работает неправильно. Я беру символы из строки и вставляю их в очередь с приоритетами в порядке их частоты в строке. Код компилируется и запускается без ошибок, единственное, что дерево, кажется, сортирует неправильно. Вот код,
class Node {
public:
int freq;
char data;
Node(int &f, char &d) { freq=f; data=d; }
bool operator<(const Node* &n) const { return n->freq < this->freq; }
};
void Init(priority_queue<Node*> &tree, string input) {
map<char,int> probability;
for(int i=0 ; i<input.size() ; i++) {
probability[input[i]]++;
}
map<char,int>::iterator it = probability.begin();
for(it ; it != probability.end() ; it++) {
Node* blah = new Node(it->second, (char&) it->first);
tree.push(blah);
}
}
что я делаю не так?
Спасибо