我无法解决这个问题,我试图以各种方式解决它 得到此错误的行是:
void Encoder::generateCodes(const Node &node, const std::vector<bool>& prefix)
{
if (&node.left() == &HT::NIL and &node.right() == &HT::NIL)//if is a leaf
{
*codes[static_cast<unsigned long>(node.key())] = prefix;
}
else
{
std::vector<bool> leftPrefix = prefix;
leftPrefix.push_back(false);
generateCodes(node.left(), leftPrefix);
std::vector<bool> rightPrefix = prefix;
rightPrefix.push_back(true);
generateCodes(node.right(), rightPrefix);
}
}
我尝试实现霍夫曼编码,此函数将霍夫曼树作为参数,并为每个字符提供二进制代码。 根据我的理解,当编译器尝试调整向量大小以插入新元素bool时会抛出错误。 实际上,如果我查看堆栈上的调用,导致异常的确切行是:
if (__v.__size_ > capacity())