Как исправить ошибку в алгоритме Хаффмана?
Как исправить ошибку в алгоритме Хаффмана?
Только не стоит называть тему "Как исправить ошибку в алгоритме Хаффмана?".
Лучше называть её как-то нейтральнее ... типа: "Как исправить ошибку в моих чудачествах?".
for (size_t i = 0; i <= data.size() / 8; ++i)
  {
    ...
    for (int j = 0; j < 8; ++j)
      if (data[i * 8 + j])
    ...
  }
Вылез за границу data. Если я правильно понял логику, то здесь должно быть что-то такое:for (size_t i = 0; i < (data.size() + 7) / 8; ++i)
  {
    ...
    for (int j = 0; j < std::min(8, data.size() - i * 8); ++j)
      if (data[i * 8 + j])
    ...
  }