Я пытаюсь реализовать алгоритм кодирования Хаффмана с помощью интеллектуальных указателей, но он работает неправильно. Я узнал, что на каком-то этапе в '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
Кодирование Хаффмана с использованием интеллектуальных указателей не работает ⇐ C++
Программы на C++. Форум разработчиков
1736898685
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79356385/huffman-coding-using-smart-pointers-is-not-working[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия