所以我需要为我的学校作业编写霍夫曼压缩/解压缩,但我在使用优先级队列存储频率时遇到了问题。
让我头疼的两个文件是 HCNode.hpp
和 main.cpp
.在HCNode.hpp
我重载的文件 bool operator<(const HCNode& other)
在我的 main.cpp
当我尝试像这样初始化优先级队列时:
priority_queue< HCNode, vector < HCNode >, less< HCNode> > freq;
编译器抛出一堆错误
编辑:这是错误之一
/usr/include/c++/4.6/bits/stl_queue.h:391:9: instantiated from ‘std::priority_queue<_Tp, _Sequence, _Compare>::priority_queue(const _Compare&, const _Sequence&) [with _Tp = HCNode, _Sequence = std::vector, _Compare = std::less]’
compress.cpp:134:59: instantiated from here
大多数错误似乎是与库的某种冲突造成的。
没关系,修复了问题,老师的代码不完整。感谢那些看过这篇文章的人。
最佳答案
您发布的错误消息不是确切的错误消息,而是导致实际错误的实例化行。
我认为最有可能导致错误的是因为比较器(在本例中为 operator<)不是 const 成员函数。
检查它是否是 const 成员函数。
关于c++ - 在 C++ 中为用户定义的对象使用优先级时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110041/