c++ - 在 C++ 中为用户定义的对象使用优先级时遇到问题

标签 c++ huffman-code

所以我需要为我的学校作业编写霍夫曼压缩/解压缩,但我在使用优先级队列存储频率时遇到了问题。

让我头疼的两个文件是 HCNode.hppmain.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/

相关文章:

c++ - 有没有办法让 C 宏关键字不可知?

python - 识别车牌的字符

c++ - 我们在 GCC 9 中有 C++20 范围库吗?

compression - 压缩 60 位字符串的最佳方法

C# - 对大文件进行霍夫曼编码需要太长时间

java - 二进制(java)中的霍夫曼代码?

c++ - 这些有什么区别?

python - 从 python 调用 C++ 函数并获取返回值

Octave - 霍夫曼代码不起作用 - SIG 的所有元素必须是 [1,N] 范围内的整数

java - Java 中的霍夫曼树