Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Если тебе интересен какой-то конкретный case — то можем разобрать его, с замерами и ассемблерными листингами. EP>Но только давай не в КСВ.
А где же ещё компьютерные срачи устраивать?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Бывает, когда надо. Вот например есть у нас массив структурок разных, но имеющих поле строковое, и приспичило нам посчитать общую длину строк в этих структурах — пишем шаблонную функу которая проходит по массиву структур T и выдает на-гора сумму T::somestring. Пример кстати не надуманный, а вполне себе некогда юзаный мной в весьма низкоуровневом коде — в хуках на NtQueryDirectoryFile и ему подобных для подсчета общей длины структур которые вернуть возможно Получается быстро и наглядно.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, alpha21264, Вы писали:
A>Ну хорошо, давай возьмём библиотеку Qt. Она на С++. A>Там даже есть своя библиотека контейнеров и она на темплейтах. A>Но весь остальной код почему-то без них.
Ну ведь ничто не мешает перед тем как делать утверждение, сначала его проверить.
Здравствуйте, MTD, Вы писали:
MTD>Здравствуйте, alpha21264, Вы писали:
A>>Ну хорошо, давай возьмём библиотеку Qt. Она на С++. A>>Там даже есть своя библиотека контейнеров и она на темплейтах. A>>Но весь остальной код почему-то без них.
MTD>Ну ведь ничто не мешает перед тем как делать утверждение, сначала его проверить.
Здравствуйте, ononim, Вы писали:
O>Бывает, когда надо. Вот например есть у нас массив структурок разных, но имеющих поле строковое, и приспичило нам посчитать общую длину строк в этих структурах — пишем шаблонную функу которая проходит по массиву структур T и выдает на-гора сумму T::somestring. Пример кстати не надуманный, а вполне себе некогда юзаный мной в весьма низкоуровневом коде — в хуках на NtQueryDirectoryFile и ему подобных для подсчета общей длины структур которые вернуть возможно Получается быстро и наглядно.
Чё-то непонятно.
А в массиве лежат структуры одного типа?
А поле строковое у всех типов структур называется одинаково?
Вот дожил до 45 лет и не знаю, зачем в Nemerle макросы.
Вот... совсем. Не использую их, да и всё тут.
Не, конечно assert написать могу.
И прочее использование макросов.
Но больше ничего с макросами не делаю.
Люди! А для чего вы используете макросы?
Может я чего упускаю?
Сложные программы пишу, например, в известном Firefox есть мой код.
Здравствуйте, alpha21264, Вы писали:
A>Люди! А для чего вы используете шаблоны? A>Может я чего упускаю? A>
Изначально шаблоны вводились в C++ для реализации парадигмы обобщённого программирование (для этих же целей существуют различные generic'и в языках типа java/c#). Но оказалось, что данный механизм позволяет так же и довольно эффективно реализовывать парадигму метапрограммирования, причём это МП времени компиляции — не имеет никаких накладных расходов. Эти техники получили широкое развитие и являются одним из главных векторов развития C++ в данное время. Правда синтаксис в итоге получается ужасным (в сравнение с языками, где подобное МП задумывалось изначально, типа D и т.п.) и части очевидных возможностей всё же не хватает.
Подводя итоги. Шаблоны C++ реализуют:
— обобщённое программирование, на отличном уровне и с нормальным синтаксисом
— метапрограммирование времени компиляции на среднем уровне и с сомнительным синтаксисом.
Отдельно можно отметить, что второй пункт хотя и реализован не очень, но это является единственной реализацией подобного в мейнстрим языках. И одной из немногих среди языков вообще.
============
Ну а если говорить лично обо мне, то можно опять же разделить использование шаблонов на 2 части: использование чужих и написание своих. С использование своих думаю всё очевидно — и стандартная библиотека и Boost (де факто стандартная библиотека) напичканы шаблонами (причём и в качестве ОП и в качестве МП). Если же говорить про написание своих, то тоже встречается, но уже несколько реже, т.к. большинство "велосипедов" уже есть в подключённых библиотеках.
O>>Бывает, когда надо. Вот например есть у нас массив структурок разных, но имеющих поле строковое, и приспичило нам посчитать общую длину строк в этих структурах — пишем шаблонную функу которая проходит по массиву структур T и выдает на-гора сумму T::somestring. Пример кстати не надуманный, а вполне себе некогда юзаный мной в весьма низкоуровневом коде — в хуках на NtQueryDirectoryFile и ему подобных для подсчета общей длины структур которые вернуть возможно Получается быстро и наглядно. K>Чё-то непонятно. K>А в массиве лежат структуры одного типа?
Ну там хитрый массив — в буфере лежит этакий связный список, элемент каждого одним из своих полей имеет смещение от себя до следующего
K>А поле строковое у всех типов структур называется одинаково?
Да. Вобщем чтоб дальше не объяснятся, вот эти структуры: раз, два, три, четыреetc
И вот предположим задачка: вам надо из списка таких структур изъять элемент относящийся к файлу "foobar.txt"...
Как много веселых ребят, и все делают велосипед...
Здравствуйте, alpha21264, Вы писали:
A>Ну хорошо, давай возьмём библиотеку Qt. Она на С++. A>Там даже есть своя библиотека контейнеров и она на темплейтах. A>Но весь остальной код почему-то без них. A>