- 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;
}
defecate-plusplus 11.09.2012 23:43 # +7
HaskellGovno 12.09.2012 00:02 # −1
tirinox 12.09.2012 00:55 # −2
list.remove(node); // а если node = NULL?
Vindicar 12.09.2012 08:10 # +2
А вот в оригинальном коде такое, по-моему, неизбежно случится. Остается надеяться, что list.remove() корректно обработает аргумент NULL.
Steve_Brown 12.09.2012 10:34 # 0
alexzak 13.09.2012 00:34 # 0
TarasB 12.09.2012 10:39 # +2
defecate-plusplus 12.09.2012 10:45 # +7
TarasB 13.09.2012 17:48 # +2
defecate-plusplus 13.09.2012 18:07 # +4
HaskellGovno 13.09.2012 18:15 # +2
3.14159265 13.09.2012 18:16 # +4
HaskellGovno 13.09.2012 18:20 # +4
жиром
3.14159265 13.09.2012 18:21 # +3
> там нет таких убогореализованных Тарасом списков.
А тут прав вдвойне.
TarasB 13.09.2012 18:29 # +3
HaskellGovno 13.09.2012 18:17 # +3
Больше зеленого! И да, там нет таких убогореализованных Тарасом списков.
eth0 13.09.2012 19:37 # +2
Vindicar 12.09.2012 11:09 # +5
3.14159265 12.09.2012 20:34 # +3
Господа, не забывайтесь - Вы на говнокоде.
LispGovno 12.09.2012 23:44 # 0
Возьми стандартный лист.
list.clear();
ирррр....
Вдруг с памяти я снял покров:
В дельфи нет генериков.
Раз в д7ке нет контейнеров,
Работадатель не забываеть набирать велотренеров.
alexzak 13.09.2012 00:36 # +2
А как вы узнали? :)
bormand 13.09.2012 05:50 # 0
TarasB 13.09.2012 17:47 # 0
HaskellGovno 13.09.2012 18:19 # +2
?
defecate-plusplus 13.09.2012 18:21 # +1
http://govnokod.ru/7095
HaskellGovno 13.09.2012 18:24 # +1
Я почти угадал. Теряю хватку.
Кстати, оно же не может во много инстансов одной процедуры с разными типами в одном модуле.
TarasB 13.09.2012 18:28 # +3
Lure Of Chaos 12.09.2012 18:10 # +3
list=null;
3.14159265 12.09.2012 18:22 # +5
PS И если сцылка на список в другом месте - это тебя не спасёт.
Так что remove, сударь, remove их всех - GC разберется кто прав, а кто виноват.
Lure Of Chaos 12.09.2012 19:41 # 0
однако, у меня появилась странная мысль о деструкторах в языках с неявным управлением памятью.
3.14159265 12.09.2012 20:14 # 0
>странная мысль о деструкторах в языках с неявным управлением памятью.
а что не так с finalize, weak refs и всем таким?
Lure Of Chaos 12.09.2012 21:15 # +1
finalize может вызваться или не вызваться (никогда)
weak references могут оказаться собранными даже если еще нужны
bormand 13.09.2012 05:57 # +3
Если на объект нет ни одной нормальной ссылки - он не нужен.
А деструкторов не хватает. Открытие файла, которое, в с++ пишется в пару строк с использованием RAII, на яве превращается в дофигастрок с отловом экцепшена и ручным закрытием файла. Можно, конечно, запилить что-то такое: Но это же извращение и лишний класс на выхлопе.
P.S. Может быть я явонуб и что-то недопонимаю?
rat4 13.09.2012 08:45 # +5
Steve_Brown 13.09.2012 09:59 # 0
bormand 13.09.2012 10:15 # 0
3.14159265 13.09.2012 13:49 # +1
Пиши удобные обертки или юзай чужие. Так и живём.
TarasB 13.09.2012 17:52 # 0
bormand 13.09.2012 18:05 # +1
TarasB 13.09.2012 18:31 # +2
bormand 13.09.2012 18:37 # +2
HaskellGovno 13.09.2012 18:53 # +1
TarasB 13.09.2012 18:56 # +3
bormand 13.09.2012 20:16 # +3
TarasB 13.09.2012 20:31 # +2
roman-kashitsyn 13.09.2012 21:58 # +4
3.14159265 13.09.2012 18:24 # +1
А вот это не нужно. YAGNI так сказать. Достаточно try-finally.
Разве что превратить его в unchecked.
guest 14.09.2012 07:09 # +2
что вообще такое лист ?
намешаны сишный вариант с просто node* и с++ в котором есть класс лист.
вы уже решите, или котлеты или мухи