share_ptr
을 사용하여 단독 연결 목록을 구현하려고했습니다. 여기에 구현 ... 아래 노드 클래스는 ... 아래shared_ptr을 사용한 단독 연결 목록
template<typename T>
class Node
{
public:
T value;
shared_ptr<Node<T>> next;
Node() : value(0), next(nullptr){};
Node(T value) : value(value), next(nullptr){};
~Node() { cout << "In Destructor: " << value << endl; };
};
링크 된 목록 클래스입니다 ...
template<typename T>
class LinkedList
{
private:
size_t m_size;
shared_ptr<Node<T>> head;
shared_ptr<Node<T>> tail;
public:
LinkedList() : m_size(0), head(nullptr) {};
void push_front(T value)
{
shared_ptr<Node<T>> temp = head;
head = make_shared<Node<T>>(Node<T>(value));
head->next = temp;
m_size++;
if (m_size == 1)
tail = head;
}
void pop_front()
{
if (m_size != 0)
{
// Here I am having doubt------------------------!!!
//shared_ptr<Node<T>> temp = head;
head = head->next;
m_size--;
if (m_size == 0)
tail = nullptr;
}
}
bool empty()
{
return (m_size == 0) ? true : false;
}
T front()
{
if (m_size != 0)
return head->value;
}
};
내 질문은, 내가 제대로 shared_ptr
에 대한 사용하고 있습니다 노드 할당? 그렇지 않다면 shared_ptr
을 어떻게 할당하고 pop_front
방법으로 노드를 삭제해야합니까?
[This (http://codereview.stackexchange.com/questions/33136/singly-linked-list-with-smart-pointers) – P0W