#include <bits/stdc++.h>
using namespace std;
struct Node
{
int key;
struct Node *left;
struct Node *right;
Node(int k){
key=k;
left=right=NULL;
}
};
int main() {
Node *root=new Node(1);
root->left=new Node(2);
root->right=new Node(3);
cout<<*root<<endl;
}
为什么此代码会引发错误?我试图通过执行*root来取消引用根节点,但它不起作用。*根表示什么?
必须重载struct:的ostream运算符
std::ostream& operator<<(std::ostream& os, const Node& node)
{
if (os.good())
{
os << node.key << std::endl;
// print pointer here if needed
// ...
}
}
或者只写:
cout << root->key << endl;
CCD_ 1只是取消引用指针,并且是类型CCD_。在C++中,您必须指定如何打印复杂的数据结构,这与python等其他语言不同。这就是为什么你不能写cout << *root << endl;
。
比较复杂的数据结构也是如此。因此,您必须重载===-运算符。
bool operator==(Node *lnode, Node *rnode)
{
return lnode->key == rnode->key;
}