小编der*_*kdt的帖子

用智能指针实现一个简单的单向链表

嗨,我正在尝试使用智能指针实现一个简单的单链表,这是我到目前为止所拥有的,我选择使用 C++ 的 shared_ptr,但我读到 unique_ptr 更适合这种情况,但是,我不是真的知道如何遍历列表(即 currentNode = currentNode->next)以到达列表的末尾,以便使用 unique_ptr 插入元素。这是我到目前为止的代码:

template <typename T>
class LinkedList;

template <typename T>
class ListNode
{
public:
    ListNode() : _data(T()) {}
    explicit ListNode(const T& value) : _data(value) {}

    friend class LinkedList < T > ;
private:
    T _data;
    shared_ptr<ListNode<T>> _next;
};

template <typename T>
class LinkedList
{
public:
    void push_back(const T& value)
    {
        if (_root)
        {
            shared_ptr<ListNode<T>> currentNode(_root);

            while (currentNode->_next != nullptr)
            {
                currentNode = currentNode->_next;
            }

            currentNode->_next = make_shared<ListNode<T>>(value);
        }
        else
        {
            // …
Run Code Online (Sandbox Code Playgroud)

c++ linked-list smart-pointers shared-ptr unique-ptr

2
推荐指数
1
解决办法
2782
查看次数