Где вы находите шаблоны полезными? - PullRequest
15 голосов
/ 26 октября 2008

На моем рабочем месте мы обычно используем iostream , string , vector , map и нечетный алгоритм или два. На самом деле мы не нашли много ситуаций, когда шаблонные методы были бы лучшим решением проблемы.

Здесь я ищу идеи и, необязательно, пример кода, который показывает, как вы использовали шаблонную технику для создания нового решения проблемы, с которой вы столкнулись в реальной жизни.

В качестве взятки, ожидайте ответа за ваш голос.

Ответы [ 12 ]

1 голос
/ 26 октября 2008

Помимо очевидных причин (таких как предотвращение дублирования кода путем работы с различными типами данных), существует этот действительно крутой шаблон, который называется дизайном на основе политик. Я задал вопрос о политиках против стратегий .

Теперь, что такого изящного в этой функции. Представьте, что вы пишете интерфейс для использования другими. Вы знаете, что ваш интерфейс будет использоваться, потому что это модуль в своем домене. Но вы еще не знаете, как люди будут его использовать. Дизайн на основе политик усиливает ваш код для повторного использования в будущем; это делает вас независимым от типов данных, на которые опирается конкретная реализация. Код просто «вкрадывается». : -)

Черты сами по себе прекрасная идея. Они могут прикрепить определенное поведение, данные и типизированные данные к модели. Черты позволяют полную параметризацию всех этих трех полей. И самое главное, это очень хороший способ сделать код многократно используемым.

1 голос
/ 26 октября 2008

Я использую шаблоны для указания типов объектов функций. Я часто пишу код, который принимает объект функции в качестве аргумента - функцию для интеграции, функцию для оптимизации и т. Д. - и нахожу шаблоны более удобными, чем наследование. Таким образом, мой код, получающий объект функции - такой как интегратор или оптимизатор - имеет параметр шаблона для указания типа объекта функции, с которым он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...