我正在尝试将节点存储在队列中(STL),但是我收到了错误。
首先,我想知道Node的结构是否正确。
真的,我想按整数(从小到大)的顺序存储节点,我听说优先级队列,我试图使用它,但是我收到了一个大错误,所以我回到队列。 / p>
然后我看到有关运算符重载节点的事情,但我并没有重新确定如何使用它。将不得不制作Node.h文件?
struct Node{
int freq;
char Char;
struct Node *left;
struct Node *right;
Node(int freq, char Char){
freq = freq;
Char = Char;
}
};
queue<Node*> list;
Node *a = new Node(2, '4');
list.push(a);
Node *e = list.pop();
cout << e->freq;
ERROR:
error: void value not ignored as it ought to be // Node *e = list.pop();
答案 0 :(得分:2)
pop
是void
函数。您需要front
:
list.pop();
Node *e = list.front();
下一个问题是构造函数:
Node(int freq, char Char){
this->freq = freq; // <------- 'this->' is added to access to right variables
this->Char = Char; // <-------
}
我的建议是编写你的构造函数,如下所示:
Node(int freq, char Char) : freq(freq), Char(Char)
{
}