шаблоны проектирования, используемые в STL (стандартная библиотека шаблонов) - PullRequest
8 голосов
/ 23 апреля 2010

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

Ответы [ 5 ]

14 голосов
/ 23 апреля 2010

Надеюсь, вы имеете в виду, «какие шаблоны проектирования можно определить в STL».

Стек STL является контейнерным адаптером.Адаптер - это шаблон дизайна.Итератор также является шаблоном проектирования.Функциональные объекты STL связаны с шаблоном команды.

Шаблоны:

  1. Адаптер (адаптеры контейнера)
    • стек
    • очереди
    • очереди приоритетов
  2. Итератор
  3. Команда + Адаптер (функциональные адаптеры)
  4. Итератор + Адаптер (адаптеры итераторов)
    • обратные итераторы
    • вставка итераторов
    • потоковые итераторы
  5. Шаблонный метод (алгоритмы STL с использованием пользовательских функций)
  6. Какой шаблон создания?(Распределители)

Способ реализации этих шаблонов сильно отличается от способа их реализации в объектно-ориентированном проектировании.Йосуттис писал: «Концепция STL противоречит первоначальной идее объектно-ориентированного программирования».Вот что вызывает замешательство вокруг вашего вопроса.

1 голос
/ 23 апреля 2010

STL широко использует шаблоны. GoF вызывает этот параметризованный тип.Шаблоны полезны для настройки решения шаблона проектирования или для создания нового, интуитивно понятного решения.(Для получения дополнительной информации см. Раздел «Наследование и параметризованные типы» в « Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения »).Преимущество знакомства с STL (и boost ) заключается в том, что они являются хорошим источником для изучения шаблонов (и метапрограммирования) в C ++, которые, в свою очередь, могут использоваться при разработке более совершенных проектов.

1 голос
/ 23 апреля 2010

Шаблон Iterator довольно активно используется в STL.

1 голос
/ 23 апреля 2010

Я думаю, что ваша проблема в том, что шаблоны проектирования не реализованы в STL . Они могут быть реализованы в C ++ и использовать контейнеры и алгоритмы из STL, но STL и шаблоны проектирования никак не связаны между собой.

Мой совет - узнать о STL, прочитав что-то вроде Отличная книга Николая Йосуттиса Стандартная библиотека C ++: учебное пособие и справочник или учебное и справочное руководство по STL . Это поможет узнать, что STL может сделать для вас. Затем погрузитесь в реализацию шаблонов проектирования в C ++, используя свои знания о STL.

0 голосов
/ 24 июня 2015

Из C ++ 11 мы получили три вида интеллектуальных указателей , то есть shared_ptr, unique_ptr и weak_ptr, шаблон за ними: Шаблон прокси .

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