Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Спасибо, что напомнили. Посоветую эту школу одному своему знакомому, который застенчиво прикрывается паспортом и стесняется честно сказать, кто он на самом деле.
>Школа анонимных Тарасов
Ммм… Тарас спрашивает Тараса:
- Тарас, как тебя зовут? Ты Конардо?
- Нет, - отвечает Тарас. - Моё имя Тарас!
- А тебя наверное зовут Иван, а Тарас?
- Нет! Меня зовут Тарас!
повар.жпег
[color=shite]Это в связи с недавними событиями, когда некие разноцветные анонимы представлялись Тарасами.[/color]
Я что-то не понял?
Где олдфаги?
Где люди, с которыми можно поговорить про пользу умных указателей?
Здесь вообще хоть кто-то понимает, о чём я веду речь?
по-честному, 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 можно использовать и с массивами.
Это ведь своего рода акт создания некой культурной ценности ;)). Вспомнил про типа, который 10-го прибил яйца к мосту для протеста. Он называет себя художником.
Вот бы кто-нибудь приколотил свои яйца к мосту, а перед этим наколол на груди c++ - говно. Какая была б подстава бы была c++ хейтерам.
Голый художник с татуировкой "c++ - говно" на груди, с грустью глядящий на свои яйца, прибитые к мосту, кстати, очень символичен. Нагота художника показывает нам ограниченность стандартной либы. Мост олицетворяет переход от с++98 до с++14. Прибитые яйца - требования заказчика и обратную совместимость.
Не, просто чувствуешь себя так, как-будто яйца прибитые. Хочешь встать и пойти дальше по мосту (поюзать новую удобную фичу с++11 типа for), а тебя гвоздь совместимости держит за яйца. И ты с грустным видом продолжаешь писать for с итераторами.
Блин, товарищи, каким образом можно избежать попадания копий объекта с одинаковыми свойствами в список tobjectlist? Я уже всю плешь проел с этими объектами. Тарасбер, ты что скажешь? Выручай. Там что-то неясное с IndexOF, но не осилил.
Разделаюсь с этим - выложу готовую прогу. Вы не пожалеете.
А не тормозно ли будет? Я ассигную tobjectlist с tstringlist, у которого дубликаты выставлено в duperror - генерить исключение, если попались 2 похожие строки, которое сам же и обрабатываю. Возник exception - убиваю предыдущий объект. Тормозит жутко. Я уверен, что примерно 20% мощности убивается на этом тупом переписывании.
А как можно оптимизировать такой момент:
Имеется tobjectlist заполненный элементами.Мы в цикле получаем элементы списка, и в зависимости от свойств этого объекта (через дженерики) заполняем listview (т.е. в зависимости от свойств объекта меняется иконка и caption) и внедряем в один из subitems ссылку на этот объект. Все вроде ничего, но если лист содержит более 1000 элементов, начинает тормозить ( Я пробовал просто заполнять listview, не тормозит.
Если делфи так медленно работает с памятью, я сильно ошибся языком.
Так вроде уже было нечто похожее: #11251
PS> Там еще кое-кто контекст уточнял. #comment143118 Хотя, признаюсь, я б и сам с интересом почитал крестотред про умные указатели, все дела.
TarasB 14.11.2013 09:50 # −1
Это не проверка работы и не школовайп.
Я абсолютно серьёзно.
crastinus 14.11.2013 11:27 # +5
TarasB 14.11.2013 13:57 # 0
JeremyW 14.11.2013 12:44 # +4
- Здравствуйте. Меня зовут Тарас и я Тарас.
1024-- 14.11.2013 13:05 # +1
3.14159265 17.10.2014 16:48 # 0
Ммм… Тарас спрашивает Тараса:
- Тарас, как тебя зовут? Ты Конардо?
- Нет, - отвечает Тарас. - Моё имя Тарас!
- А тебя наверное зовут Иван, а Тарас?
- Нет! Меня зовут Тарас!
повар.жпег
[color=shite]Это в связи с недавними событиями, когда некие разноцветные анонимы представлялись Тарасами.[/color]
TarasB 14.11.2013 13:55 # +1
Где олдфаги?
Где люди, с которыми можно поговорить про пользу умных указателей?
Здесь вообще хоть кто-то понимает, о чём я веду речь?
JeremyW 14.11.2013 14:03 # +8
crastinus 14.11.2013 14:21 # +3
>new
Наверно нужно было оставить комментарий после кода.
TarasB 14.11.2013 14:43 # −1
crastinus 14.11.2013 14:46 # +1
TarasB 14.11.2013 14:55 # 0
Soul_re@ver 14.11.2013 16:05 # 0
make_shared
>в новом стандарте, если я не ошибаюсь, new уже не нужно даже для создания указателя на объект, конструируемый с несколькими параметрами
Совершенно верно + добавили make_unique
К сожалению чистые указатели (и чистое new) может потребоваться при передаче указателя на объект библиотеке, которая сама занимается управлением переданной памятью. (Никогда такого не видел, но в теории в легаси говнокоде возможно)
Ах, да, и ещё низкоуровневая реализация разных компонентов (тех же make_*). Также адекватной замены placement new не существует.
TarasB 14.11.2013 17:17 # 0
Библиотеки, управляющие памятью не по принципу Тараса Бульбы? Так говнокод же.
Stertor 14.11.2013 17:42 # 0
anonimb84a2f6fd141 14.11.2013 20:36 # −3
Stertor 14.11.2013 20:53 # −1
laMer007 18.11.2013 18:27 # +1
Для этого можно использовать std::allocate_unique + std::unique_ptr::release когда понадобится передать в легаси библиотеку управление памятью. std::unique_ptr можно использовать и с массивами.
defecate-plusplus 14.11.2013 15:09 # +5
Всем было бы достаточно комбинации, чтобы всё понять и простить
C++ / Говнокод #.....
Запостил: TarasB
Stertor 14.11.2013 16:22 # −1
WGH 15.11.2013 10:43 # +3
crastinus 15.11.2013 08:52 # +4
Вот бы кто-нибудь приколотил свои яйца к мосту, а перед этим наколол на груди c++ - говно. Какая была б подстава бы была c++ хейтерам.
bormand 15.11.2013 09:55 # +6
anonimb84a2f6fd141 15.11.2013 22:07 # −1
Это как? Раньше все себе яйца прибивали?
bormand 15.11.2013 22:15 # +2
guest 15.11.2013 10:32 # 0
guest 15.11.2013 10:33 # 0
Stertor 15.11.2013 22:15 # −1
Разделаюсь с этим - выложу готовую прогу. Вы не пожалеете.
bormand 15.11.2013 22:16 # 0
Stertor 15.11.2013 22:20 # −1
Stertor 15.11.2013 22:34 # −1
Stertor 15.11.2013 22:33 # −2
Abbath 16.11.2013 14:13 # 0
anonimb84a2f6fd141 16.11.2013 23:11 # −1
Stertor 17.11.2013 11:16 # 0
Имеется tobjectlist заполненный элементами.Мы в цикле получаем элементы списка, и в зависимости от свойств этого объекта (через дженерики) заполняем listview (т.е. в зависимости от свойств объекта меняется иконка и caption) и внедряем в один из subitems ссылку на этот объект. Все вроде ничего, но если лист содержит более 1000 элементов, начинает тормозить ( Я пробовал просто заполнять listview, не тормозит.
Если делфи так медленно работает с памятью, я сильно ошибся языком.
3.14159265 17.10.2014 16:37 # 0
PS> Там еще кое-кто контекст уточнял. #comment143118
Хотя, признаюсь, я б и сам с интересом почитал крестотред про умные указатели, все дела.
guest 17.10.2014 20:21 # −1