我需要一些帮助来理解一些涉及C++链表的代码



这可能是一个非常愚蠢的问题。我有一个任务来创建一个新节点并向其添加值。我一直在网上寻求帮助,遇到了以下代码:

head = new(struct node);

我认为这是一种创建新节点并将其分配给 head 的方法,对吧?这只是一种更简单的写法吗?

node *new_node = new node;
head = new_node;

谢谢

这是正确的。head = new(struct node);正在使用断言运算符,并且

node *new_node = new node; head = new_node;.

我不确定,但我认为现代编译器甚至优化了同一汇编代码的两个输入,但您绝对应该使用head = new(struct node);,因为它更具可读性。

struct是不必要的:

head = new node;

是你需要写的全部。传统上,您将添加括号以使其构造函数中带有参数的类更加一致:

head = new node();

这与在临时值中创建然后复制到head的第二个示例相同。大多数编译器会优化临时值。

最新更新