1. C++ / Говнокод #14093

    +80

    1. 1
    new

    Запостил: TarasB, 13 Ноября 2013

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

    • Вы не поняли.
      Это не проверка работы и не школовайп.
      Я абсолютно серьёзно.
      Ответить
      • Так все школьники говорят.
        Ответить
      • Школа анонимных Тарасов:
        - Здравствуйте. Меня зовут Тарас и я Тарас.
        Ответить
        • Спасибо, что напомнили. Посоветую эту школу одному своему знакомому, который застенчиво прикрывается паспортом и стесняется честно сказать, кто он на самом деле.
          Ответить
        • >Школа анонимных Тарасов
          Ммм… Тарас спрашивает Тараса:
          - Тарас, как тебя зовут? Ты Конардо?
          - Нет, - отвечает Тарас. - Моё имя Тарас!
          - А тебя наверное зовут Иван, а Тарас?
          - Нет! Меня зовут Тарас!

          повар.жпег
          [color=shite]Это в связи с недавними событиями, когда некие разноцветные анонимы представлялись Тарасами.[/color]
          Ответить
    • Я что-то не понял?
      Где олдфаги?
      Где люди, с которыми можно поговорить про пользу умных указателей?
      Здесь вообще хоть кто-то понимает, о чём я веду речь?
      Ответить
      • Я угадаю этот говнокод с трех символов...
        Ответить
      • >поговорить
        >new
        Наверно нужно было оставить комментарий после кода.
        Ответить
        • Дело в том, что я пытаюсь создать самый лаконичный говнокод. Причём реальный и осмысленный и реально говняный. Комментарий испортил бы лаконичность.
          Ответить
          • Тогда все понятно. Но здесь нужно про new [] и delete [] упомянуть, потому выбор не очень хороший ;))
            Ответить
            • по-честному, delete вообще более говнокодно, чем new (потому что бывает shared_ptr<T> a = new T), но во-первых, в новом стандарте, если я не ошибаюсь, new уже не нужно даже для создания указателя на объект, конструируемый с несколькими параметрами, во-вторых, тогда бы я не уложился в три символа.
              Ответить
              • >shared_ptr<T> a = new T
                make_shared
                >в новом стандарте, если я не ошибаюсь, new уже не нужно даже для создания указателя на объект, конструируемый с несколькими параметрами
                Совершенно верно + добавили make_unique

                К сожалению чистые указатели (и чистое new) может потребоваться при передаче указателя на объект библиотеке, которая сама занимается управлением переданной памятью. (Никогда такого не видел, но в теории в легаси говнокоде возможно)
                Ах, да, и ещё низкоуровневая реализация разных компонентов (тех же make_*). Также адекватной замены placement new не существует.
                Ответить
                • Про реализацию этих самых указателей - тут само собой очевидно и так.
                  Библиотеки, управляющие памятью не по принципу Тараса Бульбы? Так говнокод же.
                  Ответить
                • > К сожалению чистые указатели (и чистое new) может потребоваться при передаче указателя на объект библиотеке, которая сама занимается управлением переданной памятью. (Никогда такого не видел, но в теории в легаси говнокоде возможно)


                  Для этого можно использовать std::allocate_unique + std::unique_ptr::release когда понадобится передать в легаси библиотеку управление памятью. std::unique_ptr можно использовать и с массивами.
                  Ответить
          • самый лаконичный говнокод у тебя бы получился и с 0 символов.
            Всем было бы достаточно комбинации, чтобы всё понять и простить

            C++ / Говнокод #.....
            Запостил: TarasB
            Ответить
          • Это ведь своего рода акт создания некой культурной ценности ;)). Вспомнил про типа, который 10-го прибил яйца к мосту для протеста. Он называет себя художником.

            Вот бы кто-нибудь приколотил свои яйца к мосту, а перед этим наколол на груди c++ - говно. Какая была б подстава бы была c++ хейтерам.
            Ответить
            • Голый художник с татуировкой "c++ - говно" на груди, с грустью глядящий на свои яйца, прибитые к мосту, кстати, очень символичен. Нагота художника показывает нам ограниченность стандартной либы. Мост олицетворяет переход от с++98 до с++14. Прибитые яйца - требования заказчика и обратную совместимость.
              Ответить
              • >Прибитые яйца - требования заказчика и обратную совместимость.
                Это как? Раньше все себе яйца прибивали?
                Ответить
                • Не, просто чувствуешь себя так, как-будто яйца прибитые. Хочешь встать и пойти дальше по мосту (поюзать новую удобную фичу с++11 типа for), а тебя гвоздь совместимости держит за яйца. И ты с грустным видом продолжаешь писать for с итераторами.
                  Ответить
            • asd
              Ответить
            • Кстати, даже в Германии показывали. Ну не яйца, а упоминали в новостях. Типичные новости о рашке - или про диктатуру, или вот такое.
              Ответить
    • Блин, товарищи, каким образом можно избежать попадания копий объекта с одинаковыми свойствами в список tobjectlist? Я уже всю плешь проел с этими объектами. Тарасбер, ты что скажешь? Выручай. Там что-то неясное с IndexOF, но не осилил.
      Разделаюсь с этим - выложу готовую прогу. Вы не пожалеете.
      Ответить
      • Ну самый тупой вариант устроит: просканить список перед добавлением, и не добавлять, если такой уже есть?
        Ответить
        • А не тормозно ли будет? Я ассигную tobjectlist с tstringlist, у которого дубликаты выставлено в duperror - генерить исключение, если попались 2 похожие строки, которое сам же и обрабатываю. Возник exception - убиваю предыдущий объект. Тормозит жутко. Я уверен, что примерно 20% мощности убивается на этом тупом переписывании.
          Ответить
        • Как вообще это делают опытные кодеры?
          Ответить
          • засунуть в set, а потом перегнать в list?
            Ответить
          • OrderedDict
            Ответить
            • А как можно оптимизировать такой момент:
              Имеется tobjectlist заполненный элементами.Мы в цикле получаем элементы списка, и в зависимости от свойств этого объекта (через дженерики) заполняем listview (т.е. в зависимости от свойств объекта меняется иконка и caption) и внедряем в один из subitems ссылку на этот объект. Все вроде ничего, но если лист содержит более 1000 элементов, начинает тормозить ( Я пробовал просто заполнять listview, не тормозит.
              Если делфи так медленно работает с памятью, я сильно ошибся языком.
              Ответить
    • Так вроде уже было нечто похожее: #11251
      PS> Там еще кое-кто контекст уточнял. #comment143118
      Хотя, признаюсь, я б и сам с интересом почитал крестотред про умные указатели, все дела.
      Ответить
    • ДАВАЙТЕ ФЛУДИТЬ И ТРОЛЛИТЬ! ;)
      Ответить

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