templates, STL10.10.2013, 12:11. Показов 3423. Ответов 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!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
||
| 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
|
|
|
Форумчанин
8216 / 5047 / 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 | |
|
Помогаю со студенческими работами здесь
40
Variadic templates
Templates внутри класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|