- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
// стоит простая задача: удалить все узлы из списка
// чувак думает, как же ему это реализовать через задницу?
// и получилось же!
if (link * root = list.get_root()) {
link * next;
do {
next = root->next();
list.remove(next);
} while (root = next);
}
// неужели нельзя вот так, по-простому?
link * node = list.get_root();
while (node) {
link * next = node->next();
list.remove(node);
node = next;
}
list.remove(node); // а если node = NULL?
А вот в оригинальном коде такое, по-моему, неизбежно случится. Остается надеяться, что list.remove() корректно обработает аргумент NULL.
жиром
> там нет таких убогореализованных Тарасом списков.
А тут прав вдвойне.
Больше зеленого! И да, там нет таких убогореализованных Тарасом списков.
Господа, не забывайтесь - Вы на говнокоде.
Возьми стандартный лист.
list.clear();
ирррр....
Вдруг с памяти я снял покров:
В дельфи нет генериков.
Раз в д7ке нет контейнеров,
Работадатель не забываеть набирать велотренеров.
А как вы узнали? :)
?
http://govnokod.ru/7095
Я почти угадал. Теряю хватку.
Кстати, оно же не может во много инстансов одной процедуры с разными типами в одном модуле.
list=null;
PS И если сцылка на список в другом месте - это тебя не спасёт.
Так что remove, сударь, remove их всех - GC разберется кто прав, а кто виноват.
однако, у меня появилась странная мысль о деструкторах в языках с неявным управлением памятью.
>странная мысль о деструкторах в языках с неявным управлением памятью.
а что не так с finalize, weak refs и всем таким?
finalize может вызваться или не вызваться (никогда)
weak references могут оказаться собранными даже если еще нужны
Если на объект нет ни одной нормальной ссылки - он не нужен.
А деструкторов не хватает. Открытие файла, которое, в с++ пишется в пару строк с использованием RAII, на яве превращается в дофигастрок с отловом экцепшена и ручным закрытием файла. Можно, конечно, запилить что-то такое: Но это же извращение и лишний класс на выхлопе.
P.S. Может быть я явонуб и что-то недопонимаю?
Пиши удобные обертки или юзай чужие. Так и живём.
А вот это не нужно. YAGNI так сказать. Достаточно try-finally.
Разве что превратить его в unchecked.
что вообще такое лист ?
намешаны сишный вариант с просто node* и с++ в котором есть класс лист.
вы уже решите, или котлеты или мухи