Кодирование Хаффмана с использованием интеллектуальных указателей не работаетC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Кодирование Хаффмана с использованием интеллектуальных указателей не работает

Сообщение Anonymous »

Я пытаюсь реализовать алгоритм кодирования Хаффмана с помощью интеллектуальных указателей, но он работает неправильно. Я узнал, что на каком-то этапе в 'build_tree' указатель имеет значение nullptr. Я не знаю почему.
Буду очень признателен, если вы сообщите мне, что с ним не так, и Извините, что делюсь всем кодом, но я подумал, что вам может понадобиться весь контекст программы:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
class node{
public:
char data;
unsigned int freq;
std::shared_ptrleft;
std::shared_ptrright;
node(const char & x = '0', const unsigned int & y = 0, const std::shared_ptr&l = nullptr, const std::shared_ptr&r = nullptr) : data(x) , freq(y), left(l),right(r){}
};
class comp{
public:
bool operator() (const std::shared_ptr&x, const std::shared_ptr&y){
return x->freq > y->freq;
}
};
std::shared_ptrbuild_tree(const std::unordered_map&tree){
try{
if(tree.empty()) throw std::invalid_argument("Something went wrong!");
}catch (std::invalid_argument & e){
std::cerrright,huffman);
}
std::string encode(const std::string & str, std::unordered_map&huffman){
try{
if(str.empty() or huffman.size() == 0) throw std::invalid_argument("Something went wrong!");
}catch(std::invalid_argument & e){
std::cerr

Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»