steamwater написав:Там нема такої проблеми. Деструктора у Node нема, тому delete на next викликатися не буде. Усi деструктори смартiв будуть запущенi ву порядку зворотньому до порядку їх створення. Проблема у тому, що все це вiдбуватимется у момент, коли увесь список виходитиме з областi.
Я й говорив за деструктори розумних вказівників. Явного деструктора немає і в самому списку, там всюди дефолтний, який буде викликати деструктор розумного вказівника. Починаючи з unique_ptr на перший вузол, його деструктор викличе видалення на цьому вузлі. Перш ніж цей виклик повернеться, він повинен знищити наступний вказівник цього вузла, чий деструктор розумного наступного (next) вказівника викличе delete на другому вузлі. І так далі, ланцюжок із n рекурсивних викликів. Що потенційно може призвести до stack overflow та UB.
cppreference самі про це говорять
https://en.cppreference.com/w/cpp/memory/unique_ptr#Example написав:// unique_ptr-based linked list demo
struct List
{
struct Node
{
int data;
std::unique_ptr<Node> next;
};
std::unique_ptr<Node> head;
~List()
{
// destroy list nodes sequentially in a loop, the default destructor
// would have invoked its `next`'s destructor recursively, which would
// cause stack overflow for sufficiently large lists.
while (head)
{
auto next = std::move(head->next);
head = std::move(next);
}
}
};
steamwater написав:Що до некогерентних до здорового глузду i логіки задач (iндекси у даному разi), у контекстi теми самого завдання, то я свою точку зору висловив. Час i енергїя учня, це ресурс який треба використати якомога краще. Тому в мене нема чого сказати гарного про LeetCode i багато iншiх ресурсiв та закладiв, незалежно вiд рiвня розкурученностi.
Як я знаю (можу помилятись) попередньо LeetCode є збірником різних завдань, які можуть вас попросити розв'язати на технічній співбесіді при прийнятті на роботу (деякі завдання можуть доходити до абсурду), саме тому деякі з них містять вже готові заготовки коду, які просять вас імплементувати, як це часто роблять на співбесідах. Я особисто знаю людину, яка вирішила там кілька сотень завдань саме для проходження співбесід, можливо автор цієї тем теж хоче знайти роботу. Що ж, який попит..
---------------------------
steamwater написав:del ненавмисної копiї. Питання до модераторiв: як редагувати я бачу, а от як видалити нi. Якщо це можливо, то як?
Видаляти можуть лише модератори, якщо хочете можу видалити за вас.