我正在学习智能指针,并对某些事情感到困惑。假设我有一个像这样的链表结构
struct Node {
shared_ptr<Node> next;
int data;
Node(int val): next(nullptr), data(val) {}
};
将下一个保存为shared_ptr是否足够好。我认为它应该是unique_ptr对吗?
也在主要我创建头部如下:
auto head = make_shared<Node>(4);
再次,这应该是make_unique()对吗?现在我把这个脑袋传递给了许多不同的功能。那么该功能的签名应该是什么?我读到智能指针不应该传递给函数(由于性能原因,基本上它没有意义)。所以记住我如何通过上面创建的头?我在任何函数中使用head的唯一方法是为它创建一个指针curr,然后使用它迭代列表。 auto curr = head;