#c #huffman-code
#c #хаффман-код
Вопрос:
Итак, мне нужно написать сжатие / распаковку Хаффмана для моего школьного задания, и у меня возникли проблемы с использованием очереди приоритетов для хранения частот.
Два файла, которые вызывают у меня головную боль, — это HCNode.hpp
и main.cpp
. В HCNode.hpp
файле, который я перегрузил bool operator<(const HCNodeamp; other)
, и в моем main.cpp
, когда я пытаюсь инициализировать очередь приоритетов, подобную этой:
priority_queue< HCNode, vector < HCNode >, less< HCNode> > freq;
Компилятор выдает мне кучу ошибок
редактировать: вот одна из ошибок
/usr/include/c /4.6/bits/stl_queue.h: 391:9: создан из ‘std::priority_queue<_Tp, _Sequence, _Compare>::priority_queue(const _Compareamp;, const _Sequenceamp;) [с _Tp = HCNode, _Sequence = std::vector, _Compare = std::меньше]’
compress.cpp:134:59: создан отсюда
большинство ошибок, похоже, вызваны каким-то конфликтом с библиотекой.
неважно, проблема устранена, код преподавателя был неполным. Спасибо тем, кто все же просмотрел этот пост.
Комментарии:
1. Вы не думаете, что вам следует опубликовать сообщение об ошибке?
Ответ №1:
Опубликованное вами сообщение об ошибке — это не точное сообщение об ошибке, а строка создания экземпляра, которая вызывает фактическую ошибку.
Я думаю, что наиболее вероятная ошибка, вызывающая ошибку, заключается в том, что компаратор, которым в данном случае является operator< , не является функцией-членом const.
Проверьте, является ли это функцией-членом const.
Комментарии:
1. Ага, это была точная причина ошибки. Учитель забыл слово ‘const’ в конце компаратора в файле, который он нам дал = .