- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
template<class fwd, class Predicat>
fwd findLast(fwd one, fwd last, Predicat P)
{
if (one == last) return one;
fwd s = one;
fwd tt = ++s;
for ( ; s!=last; )
{
s = find_if(s, last, P);
if (s != last) { tt=++s; }
}
return tt;
}
defecate-plusplus 05.11.2011 00:52 # +5
absolut 05.11.2011 07:40 # 0
Kirinyale 05.11.2011 11:51 # 0
absolut 05.11.2011 12:54 # 0
gegMOPO4 06.11.2011 19:31 # +1
gegMOPO4 06.11.2011 19:35 # 0
defecate-plusplus 06.11.2011 19:50 # 0
gegMOPO4 06.11.2011 20:54 # 0
std::forward_list в C++11.
defecate-plusplus 06.11.2011 21:15 # 0
тем не менее, даже для такого "популярного" forward_list функция написана безобразно
gegMOPO4 06.11.2011 21:31 # 0
defecate-plusplus 06.11.2011 21:55 # +1
но я, пожалуй, поверю тому, кто запостил говнокод, и его описанию, что на самом деле должен был делать код - найти последний удовлетворяющий элемент в контейнере
кодер, наверное, хотел писать s++, это бы имело как раз больше смысла (кроме начала, конечно, там что ++s, что s++ бред)
идеальный код - использовать файд_иф и реверс_итератор везде, где это возможно, и конкретно для форвард_листа (ну или в той говноархитектуре, где хочется именно искать с начала в любом контейнере) пользоваться
gegMOPO4 07.11.2011 00:20 # 0
defecate-plusplus 07.11.2011 00:29 # +1
вот ведь упёртый дед
gegMOPO4 07.11.2011 00:35 # 0
lucidfoxGovno 06.11.2011 23:06 # −1
>Код идеальный, ничего не изменишь без ухудшения.
2) Превратить О(n) в О(n^2) - это идеально. Вывод:
Код говно, автор мудак.
jabber 07.11.2011 00:12 # 0
gegMOPO4 07.11.2011 00:23 # 0
jabber 07.11.2011 00:24 # 0
gegMOPO4 07.11.2011 00:27 # 0
lucidfoxGovno 07.11.2011 09:53 # −2
Это преждевременная оптимизация. То, к чему она привела можно увидеть на примере данного говнокода. Ещё и лишние тормоза получили из-за неумения писать код для односвязанного списка. Сначала нужно было std::list юзать, а когда закончил писать блок проги и слезно понадобилась оптимизация по объему памяти, то можно переходить на std::forward_list.
Преждевременная оптимизация root of all evil.
gegMOPO4 07.11.2011 12:27 # 0
AnimeGovno-_- 07.11.2011 12:40 # −2
А для рекурсии + иммутабильность лисповых структур - обратный обход элементов вообще не нужен, тк их всегда можно вытащить из стека в обратном порядке.
gegMOPO4 07.11.2011 13:07 # 0
AnimeGovno-_- 07.11.2011 15:26 # −2
AnimeGovno-_- 07.11.2011 15:49 # −9
lucidfoxGovno 07.11.2011 15:53 # −10
нечего за меня писать
jabber 07.11.2011 15:54 # −2
lucidfoxGovno 07.11.2011 15:55 # −10
lucidfoxGovno 07.11.2011 18:59 # −7
gegMOPO4 07.11.2011 00:24 # 0
lucidfoxGovno 07.11.2011 01:45 # 0
defecate-plusplus 07.11.2011 07:17 # +1
lucidfoxGovno 07.11.2011 09:56 # −6
defecate-plusplus 07.11.2011 10:00 # +3
lucidfoxGovno 07.11.2011 10:13 # 0
от не вложенной цепочки действий ?
defecate-plusplus 07.11.2011 10:19 # +3
ты сегодня фейлишься больше обычного, сосредоточься!
TarasB 07.11.2011 10:38 # +1
Это видно хотя бы по тому, что итератор прогоняется вдоль цикла только один раз. Внутренний прогон учитывается во внешнем.
lucidfoxGovno 07.11.2011 10:49 # 0
lucidfoxGovno 07.11.2011 10:50 # +1
roman-kashitsyn 07.11.2011 10:48 # 0
gegMOPO4 07.11.2011 12:24 # 0
absolut 08.11.2011 07:00 # +2
gegMOPO4 08.11.2011 12:10 # +1
absolut 09.11.2011 09:23 # 0
gegMOPO4 07.11.2011 12:23 # 0
TarasB 06.11.2011 15:16 # 0
defecate-plusplus 06.11.2011 17:10 # 0
TarasB 06.11.2011 17:21 # +2
Да, забавно, искать последний элемент, ищя с начала.
lucidfoxGovno 06.11.2011 17:51 # −10
bugmenot 06.11.2011 19:15 # −3
http://www.youtube.com/watch?v=juFZpA7w2GE
TarasB 06.11.2011 20:42 # 0
AnimeGovno-_- 07.11.2011 18:52 # +1
TarasB 07.11.2011 19:07 # −5
3.14159265 07.11.2011 19:35 # −5
все равно тут никто её не оценил.
а то я потом удивляюсь, откуда этот опущенец xxxGovno, который кроме хуя у себя рту ничего в жизни больше не видел, знает о ней.
lucidfoxGovno 07.11.2011 19:53 # −10
на говне вырос
bugmenot 07.11.2011 21:22 # −1
анимеговна кстати стало мало после коллективного буккакэ с его акком, может пора повторить с акком виртуала?
bugmenot 07.11.2011 22:07 # −3
lucidfoxGovno 07.11.2011 22:26 # −8
Lure Of Chaos 08.11.2011 01:35 # −4
bugmenot 08.11.2011 02:59 # −2
Lure Of Chaos 08.11.2011 10:14 # −5
3.14159265 08.11.2011 13:38 # −3
3.14159265 08.11.2011 16:13 # −2
По треду слишком часто встречается ~6 против.
guest 08.11.2011 16:14 # −3
3.14159265 08.11.2011 16:20 # −3
http://govnokod.ru/8441#comment118194
guest 08.11.2011 16:23 # −3
3.14159265 08.11.2011 16:25 # −2
минусование началось отсюда:
>анимеговна кстати стало мало после коллективного буккакэ с его акком
>вижу, попка болит
>jabber
>вы оба идите на хуй
и этот тоже
guest 08.11.2011 18:44 # +1
Говнокод бы по обсуждали лучше.
ШindowsGovno
TarasB 06.11.2011 18:07 # +3
gegMOPO4 06.11.2011 19:37 # −1
gegMOPO4 06.11.2011 19:36 # 0
TarasB 06.11.2011 20:13 # 0
gegMOPO4 06.11.2011 20:58 # 0
А так — экономия памяти (до двух раз), быстрее модификация (раза в два).
lucidfoxGovno 07.11.2011 10:08 # −6
Вполне возможно, что в данной задаче этот самый последний элемент, но равный заданному, с большой вероятностью (это особенность конкретной задачи) лежит ближе к началу списка. Искать с конца в таком случае не имеет смысла. Поэтому можно применять односвязанный список. Если применять тот алгоритм, что работает за О(n) (а не тот, что в ГК за О(n^2)), то при учитывании данной особенности задачи (то условие, что последний равный элемент скорее всего лежит намного ближе к началу, чем к концу). То сложность данной задачи очень часто может вырождаться до сложности О(с) при c намного меньше n. Это будет намного эффективней применения традиционного std::list с реверсированными итераторами для данной конкретной задачи.
defecate-plusplus 07.11.2011 10:26 # +2
как это ты сможешь остановиться на 10-м элементе в контейнере из 100, считая что этот элемент - действительно последний в контейнере
ты же не проверял остальные 90
lucidfoxGovno 07.11.2011 10:28 # −4
lucidfoxGovno 07.11.2011 10:36 # −1
TarasB 07.11.2011 15:30 # −3
AnimeGovno-_- 07.11.2011 15:47 # −12