Так что прошло некоторое время с тех пор, как я сделал какое-либо C++-кодирование, и мне просто интересно, какие переменные в базовом связанном списке должны быть удалены в деструкторе и, к сожалению, Проконсультируйтесь с моим справочником по C++ в данный момент по этому вопросу. Связанный класс список выглядит следующим образом:Что все должно быть удалено в деструкторе класса
#include <string>
#include <vector>
class Node
{
Node *next;
string sName;
vector<char> cvStuff;
Node(string _s, int _i)
{
next = nullptr;
sName = _s;
for (int i = 0; i < _i; i++)
{
cvStuff.insert(cvStuff.end(), '_');
}
}
~Node()
{
//since sName is assigned during runtime do I delete?
//same for cvStuff?
}
};
Я тоже любопытно, если в деструкторе я называю
delete next;
будет, что перейти на следующий узел связанного списка и удалить этот узел и таким образом, рекурсивно удалить весь список из этой точки? Кроме того, если это так, и я по какой-то причине решил это реализовать, должен ли я проверить, является ли следующее nullptr, прежде чем удалять его или это не изменит ситуацию?
спасибо.
Это пытается быть ListNode и List. Кто владеет списком? Вы делитесь хвостами списков, если они одинаковы? Вы планируете удалять элементы или просто весь список? – lorro
@lorro, да, это технически класс узлов и был соответствующим образом скорректирован. Определить хвосты доли? Кроме того, удалите весь список. –
в этом случае, не удаляйте! В противном случае вы не сможете быстро написать стирание, которое удалит любой элемент списка. Совместное использование хвостов пересылаемого списка означает, что, учитывая, что два списка должны иметь одинаковые элементы на обратной стороне, вы разделяете узлы. Очень полезно со списками, которые когда-то были построены и стали const. – lorro