Кресты / Говнокод #16172 Ссылка на оригинал

0

  1. 1
chunksLst.erase(++it1);

Запостил: laMer007 laMer007, (Updated )

Комментарии (121) RSS

  • Почему же так много людей не умеет с ними работать?
    Ответить
    • итераторы есть отродье поинтеров, и в принципе ничего не улучшили. а в некоторых местах и ухудшили.

      самое поганое то что как STL написана, добавить итераторы с проверками (которые можно было бы активировать каким дефайном) в принципе уже невозможно. (ок, возможно, но это такая куча неблагодарной работы, что равносильно переписыванию несколько раз STL с нуля.)
      Ответить
  • Без контекста не ясно. Может необходимо как раз удалить следующий за каким-нибудь элемент. Или оригинально там был forward_list, его потом сменили на простой список и все erase_after поменяли на такую конструкцию.
    Ответить
  • классический
    var i = 0;
      while (i < list.Count)
      list.RemoveAt(i++);

    в плюсах?
    Ответить
    • Эт че-за говно? 🙂 Проредить список, удаляя каждый второй элемент? При этом сканя его каждый раз с самого начала (т.к. list, а не vector)...
      Ответить
      • Ну это классика говнокода. Из таких исходником и пошли легенды о тормозящей жабе
        Ответить
        • > тормозящей жабе
          Ну в жабе list это все-таки массив, а не список. Так что там этот код не столько тормозит, сколько не все элементы удаляет 🙂

          P.S. Бесит вот эта разница в терминологии - где-то list это список с произвольной реализацией, к которому можно обращаться по индексу (привет жабе), где-то это явно массив (привет питону), а где-то - именно связный список (привет крестам).
          Ответить
          • да в шарпе тоже такая канитель. List - массив, LinkedList - список.
            Ответить
          • Тоже и когда в разговоре упоминаешь "список". Крестовики понимают тебя как "связный список" и начинают говорить об оверхеде, лисперы и наверное большинство остальных понимают именно как "список", абстрактную структуру данных без привязки к реализации.
            Ответить
                • Если сказать "список жильцов" или "список чисел", то я пойму его как абстрактную хрень, которая может быть вообще в какой-нибудь базе данных. Если же "список" скажут в контексте структур данных, а язык не укажут - то, как сишник, я буду склоняться к linked list. Вот такие дела.
                  Ответить
                  • Ну, я и говорю. Про списки жильцов конечно речь не идет, речь о "храним список всех атрибутов объекта" или что-то в таком духе, в ситуации когда это может относится и к структуре данных и к более высокому уровню абстракции. Я как дельфин подразумеваю "список" скорее как произвольную структуру данных, наверное потому что в дельфи TList это массив и по-моему большинство думает также, а крестовики поправляют меня типа "нет, список нехорошо, лучше вектор". Так что да, путаница в терминологии не только в английском варианте.
                    Ответить
                    • > по-моему большинство думает
                      наверное, именно поэтому на странице в педивикии (и русской, и английской) для List красуется рисунок, изображающий связный список - потому что большинство представляет его как массив, ага

                      и большинству, конечно, известно, что к абстрактному типу данных List не накладываются требования рандомного доступа - лишь последовательного, но их не смущает это противоречие
                      ----

                      путаница в терминологии возникла именно из-за плохого проектирования дельфиней библиотеки
                      что мешало им сделать TArray? и как называется связный список в библиотеке? в дельфи же есть в поставке связный список?
                      Ответить
                      • > в дельфи же есть в поставке связный список?
                        Но зачем? Тем, для кого, список это массив, связанный список никак не поможет.
                        Ответить
                          • Дык речь о том, что интерфейс List требует, чтобы был реализован рандомный доступ. А за O(1) или за O(N) он будет работать - это другой вопрос.
                            Ответить
                            • > wiki/Random_access
                              > In data structures, direct access implies the ability to access any entry in a list in constant (independent of its position in the list and of list's size, i.e. O(1)) time.
                              Ответить
                              • надо просто рядом со списком хранить массив ссылок на элементы массива и будет заебись-О(1)-лист
                                Ответить
                                • > и будет заебись-О(1)-лист
                                  Ага, а теперь удали элемент из середины.
                                  Ответить
                                  • Извините меня, пожалуйста, что я, не будучи знаком, позволяю себе... но предмет вашей ученой беседы настолько интересен, что...

                                    Вы изобретаете новый тип данных?
                                    Ответить
                                  • >Ага, а теперь удали элемент из середины.
                                    Сдвинул ячейки, обновил длину. Стандартный подход.
                                    Ответить
                                    • > Сдвинул ячейки
                                      За O(1)? 🙂

                                      > Стандартный подход.
                                      Я знаю. Но этот подход меняет только константу перед O(n). Неплохо меняет, если структуры большие. Но сложность, увы, не понижает. Ну разве что кроме случая, когда ты удаляешь из списка пачку элементов, а затем один раз перестраиваешь индекс.
                                      Ответить
                                        • > Вам "шашечки" или ехать? 🙂
                                          Мне чтобы таксист не обсчитывал. А кое-кто тут выше написал, что это будет заебись-O(1)-лист 🙂
                                          Ответить
                      • >потому что большинство представляет его как массив, ага
                        И где я это утверждал?
                        Википедия в точности подтверждает мою точку зрения - первым идет определение как абстрактной структуры данных. Соответственно говорить о том что, к примеру, хранить в списке нехорошо т.к. будет оверхед по памяти - крестодеформация. Или например считать что число элементов в векторе может изменяться - ну кто мешал им назвать его array?
                        Ответить
                        • Вектор - правильно с математической точки зрения. Массив подразумевает участок памяти, вектор - структуру данных (которая не обязана быть участком памяти, может там виртуальные члены, а может они разбросаны по сети).
                          Ответить
                        • собственно, что со связным списком в стандартной поставке дельфей?
                          я неспроста его не нашёл - его тупо нет?
                          Ответить
                          • Нет. Любители оптимизаций пусть пилят его сами.
                            Ответить
                            • Без шаблонов или дженериков уныло пилить контейнеры.
                              Ответить
                              • Да, поэтому раньше и не запилили, и в тех случаях где он и правда нужен (типа менеджера памяти) запиливали с нуля. А т.к. теперь дженерики есть, то желающие могут и в общем виде что-нибудь запилить.
                                Ответить
                                • Но почему-то там почти нигде его не юзают, и суют везде голые указатели да инты (в которые умудряются кастовать указатели, пока делфня работает только на 32-битных платформах)...

                                  Да и память же не освободится сама по себе, если указатель на нее засунуть в variant и этот variant умрет?
                                  Ответить
                  • Я вот отнесусь к списку как к структуре с быстрой вставкой в произвольную позицию в контексте объёмов данных рассматриваемой задачи.
                    Например для малых объёмов данных с небольшими элементами - это вектор. Для такого же объёма данных, но с большими элементами - это вектор указателей на элементы. Ну а дальше уже свзанный лист понятное дело.
                    Ответить
          • >Бесит вот эта разница в терминологии - где-то list это список с произвольной реализацией
            А где-то он ленивый и похож на итератор.
            Ответить
      • > Эт че-за говно?
        Напоминает:
        var as = document.getElementsByTagName('a');
        while (as.length) as[0].parentNode.removeChild(as[0])
        Ответить
      • Если нужно толко очистить список - все намного проще:
        list.clear();
        Ответить
          • > а в других языках есть такой метод
            В жабе, крестах и шарпе - точно есть. Да вроде и в остальных был.

            > списками, содержащими ссылки на объекты
            А с этим в языках, отличных от делфи, давно научились бороться - в крестах RAII, в жабе и шарпе - сборщик мусора. Вот у меня есть небольшой заброшенный проектик на крестах - в нем на 100(!) классов одно рукопашное освобождение памяти, да и то сдуру и от лени, и легко убирается.
            Ответить
          • нет, откуда такая роскошь. Во всех языках кроме делфи прогеры сами себе пишут либу для массивов и листов.
            Ответить
              • >> всякой хуйней - stringBUILDER-ы, делегаты, и прочая дрянь, которая нах не нужна - мне, во всяком случае.

                Что мне тебе на это ответить?

                Ты мутируешь в царя
                Ответить
                  • >>На PureBasic кодишь?

                    меня терзают смутное сомнение, что ты знаешь только 2 языка
                    Ответить
                      • Завтра ищешь в интернете книжку Керниган, Ричи. Язык C. Похуй если ничего не поймешь. Затем идешь на http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию сишного кода - 1TBS, чтобы от зубов отскакивало. Когда напишешь свою первую сортировку Хоара, по пути изучив ассемблер инлайном, скачиваешь и изучаешь любую олдовую среду разработки, рекомендую Turbo C. Как переделаешь сортировку, чтобы была по меньшей мере итеративной, а не рекурсивной, можешь идти дальше - тебя ждет увлекательный мир байтоёбства. Хипсорт, сверхбыстрые асинхронные B-деревья, xor-связные списки. Отсос у хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-богов, которые работают в тёплом офисе за приличную зарплату не заставит себя ждать и уже через пол года ты будешь так редко мыться, что любая баба будет брезгливо закрывать нос платком при одном упоминании твоей одежды. И ты станешь царем
                        Ответить
                                  • на заметку - не отвечать старперу сразу -он правит коменты
                                    Ответить
                                    • > он правит коменты
                                      Я тоже правлю комменты. И ты правь комменты.
                                      Ответить
                                      • нет, я же благороден и красив.

                                        стих вам на ночь

                                        Пуста флудильня, гаснут свечи
                                        Уснули тролли под мостом
                                        И с кофе самка человечья
                                        Тоскливо думает о Нём

                                        Свирепой мамкой погоняем
                                        Уходит юный падаван
                                        Хотя в душе, мы точно знаем,
                                        Желает грабить корован

                                        Прекрасный рыцарь интернета
                                        Натружено шлифует меч
                                        Созданья тьмы, созданья света
                                        Вновь разошлись до новых сечь

                                        Но завтра тут наступит битва
                                        И снова рак пойдет на мид
                                        Окамма отвергая бритву
                                        Здесь будет гарцевать джигит

                                        Воскреснет ненависти слово
                                        Во имя преданной любви
                                        Ну а пока лишь сонный модер
                                        Банхаммер чистит от крови
                                        Ответить
                                    • > на заметку - не отвечать старперу сразу -он правит коменты
                                      Или применять цитирование.
                                      Как-то раз я попался на это 🙂
                                      Ответить
                        • > xor-связные списки
                          Прикольная структура данных, кстати. Чувствую себя царем ;(
                          Ответить
              • > делегаты
                В делфи никогда не хотелось повесить на один ивент два разных обработчика? Ну или пристегнуть к обработчику некий контекст, например значение переменной вместо упихивания этого контекста в свойство tag или как там его у вас.

                > stringBUILDER
                Не хочешь - не юзай. Можешь просто складывать строки. СтроительВеревок нужен исключительно ради производительности (и неплохо повышает ее, если тебе надо 100500 строк поклеить).
                Ответить
                    • Правильно. По одному.

                      Просто иногда хотелось навесить на элемент управления некое "поведение" (т.е. набор реакций на ивенты) и при этом лениво было его сабклассить (в делфи же нужно было либо регать свой класс как компонент (что довольно противно, особенно в отладке), либо создавать инстансы врукопашную в OnCreate формы...). Если можно навесить только один обработчик - так не получится.
                      Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8