{
ListNode* prev;
ListNode* next;
ListNode* rand;
std::string data;
};
Из имен вроде понятно.
Когда из связного листа делаем POP и удаляем, например, head, то другие ноды в списке могут иметь в поле rand ссылку на удаленный объект.
Просто не хотелось бы пробегать по всему связному списку и проверять есть ли ссылка на удаленный объект и если есть, то присваивать ей nullptr.
Может есть способ проще? Может можно как-то удалить head так, чтобы во всех rand которые на него ссылаются выставлялась nullptr?
Кажется тут нужен интрузивный счётчик если хочешь это на прод
вот же
А тебе точно надо удалить его, а не переназначить на новый рендомный нод?
Ну, тут вполне возможно что бегать по списку будет все же проще, чем использовать weak ptr. Не по сложности кода, а по производительность. Хотя конечно можно делать оба варианта.
Обсуждают сегодня