templates, STL10.10.2013, 12:11. Показов 3963. Ответов 43
Метки нет (Все метки)
ПЕРВОЕ средства обобщенного программирования в С++ (templates)
ВТОРОЕ библиотека STL, контейнеры и алгоритмамы STL в чем разница первого и второго? спасибо.
0
|
|
| 10.10.2013, 12:11 | |
|
Ответы с готовыми решениями:
43
Variadic Templates Variadic templates |
| 10.10.2013, 23:14 | |
|
Не по теме: если кто понял о чем говорил AnyOne697 пожалуйста переведите :D я честно прочитал его посты, но смысл почему не надо использовать шаблоны не понял.
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 10.10.2013, 23:20 | |
|
Могу с полной уверенностью сказать: переход от чистого ОО к симбиозу ОО и обобщенного программирования дал мне просто огромный левел-ап. Я смог нормально читать и вникать в код буста. Это просто неиссякаемый кладезь полезной информации. Сравнимо с тем, что я всю жизнь сидел дома, а потом внезапно вышел на улицу - новые горизонты, новые и почти неограниченные возможности.
Как пафосно я завернул ![]() В общем я скромно призываю AnyOne697 реализовать какую-нибудь библиотеку буста без призыва шаблонов и показать, насколько увеличилось удобство использования и производительность.
0
|
|
|
Каратель
|
|||
| 10.10.2013, 23:30 | |||
|
Добавлено через 1 минуту Не по теме: совпадение с Шариковым случайно:D
1
|
|||
|
Ушел с форума
|
||
| 11.10.2013, 00:48 | ||
|
А указатель как вставить ? Завернуть его в структуру и унаследовать структуру от Object ? Вообще, это не опечатка, что Object передается по значению ? Если не опечатка, тогда как вообще выполняется получение реального типа ? Ок, допустим это опечатка и Object передается по указателю/ссылке. И сразу же встает вопрос управления временем жизни объекта. В общем, этот пример неубедителен. Простой std::list проще, нагляднее и скорее всего еще и эффективнее, в основном за счет использования шаблонов.
1
|
||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
||
| 11.10.2013, 00:53 | ||
|
0
|
||
|
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
|
|||||||||||||||||||
| 11.10.2013, 01:21 | |||||||||||||||||||
|
[quote="Убежденный;5166658"]И как в такой list вставить экземпляр типа int ? Например, put(123) не работает.[quote]
Легко.
Алсо, иногда, когда скорость (ну или эллегантность кода, что в общем-то было в приоритете) очень и очень критична, делали такое:
Вообще, мы хотели ещё попробовать добавить немного рефлексии, но как-то слабо получалось. Не удобно очень. Или макросы страшные появлялсиь, или какие-то списки приходилось создавать. Но с ней всё было бы много круче. В общем, я люблю крайности. Смешивать ООП с обобщённым программированием, как товарищ ct0r предложил - мерзость по сути. Придерживаясь одной идеи нет конфликтов идей, как это часто происходит в Си++. Если же в разработки, то она как по маслу. Разделение заявления / реализации - на ура. Убогих темплейтов - минимум. Вообще, я тут распинаюсь, а зачем мне это?.. Я же написал, что я прекрасно понимаю мощь темплейтов. Но не нужным мне они, ваши темплейты. Лучше бы доработали мультипоточность или добавили бы нормальные умные указатели (без использования темплейтов - с ними они уже очень давно были). Или добавили бы минимальную поддержку графики (необязательную). Да, снова получается Java. Но Си++ интересен тем, что всегда есть выбор. И это круто. Этим он крут. Из-за этого я не могу полностью с него слезть. Добавлено через 10 минут
0
|
|||||||||||||||||||
|
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
|
||
| 11.10.2013, 01:38 | ||
|
0
|
||
|
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
|
||
| 11.10.2013, 01:41 | ||
|
Например, нужно уложить несколько миллионов комплексных чисел в контейнер и не потерять производительность при их обработке. C++ это легко позволяет сделать с помощью шаблонов (complex<T> и vector<T>) без какой-либо потери производительности вроде кучи аллокаций в heap, лишней косвенности и т.п. Все данные будут лежать одним куском в памяти и обрабатываться максимально эффективно, при этом все будет в объектах с удобным интерфейсом. Чтобы добиться подобной производительности в Java придется полностью выбросить все абстракции и работать напрямую с массивом из double или float, где под каждое комплексное число будет отводиться два double/float. Причем даже ArrayList нельзя будет использовать для double/float из-за boxing. Не позволяют механизмы абстракции в Java получать эффективный код, слишком они там простенькие, даже в C# куда лучше будут.
1
|
||
|
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
|
||||||||||||
| 11.10.2013, 01:59 | ||||||||||||
И кстати, лично мне кажется это более удобным, чем шаблоны. Особенно при использовании. Как будно пишешь на выразительном скриптовом языке без кучи звёздочек и знаков меньше-больше. Добавлено через 5 минут Алсо, совсем забыл. Здесь получается интересная штука - можно в один лист запихать объекты разного типа. Но, как я говорил, не хватает рефлексии.
0
|
||||||||||||
|
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
|
||
| 11.10.2013, 02:03 | ||
|
И уже видно, что copy-paste - это ваш метод, под каждую специализацию ручной copy-paste. Очень элегантно и эффективно. Получается, что нужно этим методом сделать ComplexDouble, ComplexFloat, ComplexDoubleList, ComplexFloatList, такой у вас подход?
0
|
||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
|
| 11.10.2013, 02:04 | |
|
а в Qt как реализованы Qcontainers?
0
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||||||
| 11.10.2013, 02:04 | |||||||||||
|
не нужно!
2
|
|||||||||||
|
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
|
||
| 11.10.2013, 07:47 | ||
|
Окей. Кажется меня здесь начинают... неправильно понимать. Подозреваю это было с самого начало.
Я не категорически против шаблонов. Я понимаю насколько мощный инструмент. Просто они меня раздражают. Мне они не нравяться, но это не значит, что я их не использую. Конечно использую, но не так активно, как это делают stl'и и бусты. Да мы переписали библиотеку. Но работа с числами интуитивна - что за бредовый ComplexFloat? А ComplexInteger? Что это за вырождение. double уже покрывает максимально возможное количество значений. Мы же не на микроконтроллеры пишем, что бы на float'ах экономить. Успокойтесь.
0
|
||
|
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
|
||
| 11.10.2013, 08:15 | ||
|
0
|
||
|
134 / 106 / 10
Регистрация: 22.05.2010
Сообщений: 533
|
||
| 11.10.2013, 08:50 | ||
|
Да и вообще, может уже пора закончить?.. Бессмысленный спор, ИМХО.
0
|
||
| 11.10.2013, 08:50 | |
|
Variadic templates
Templates внутри класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|