шаблоны проектирования, используемые в STL (стандартная библиотека шаблонов)

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

5 ответов


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

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

модели:

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

способ реализации этих шаблонов очень отличается от того, как они реализованы в объектно-ориентированном дизайне. Джосаттис писал: "концепция STL противоречит первоначальной идее объектно-ориентированного программирования". Это то, что вызывает путаницу вокруг вашего вопроса.


на итератор шаблон используется довольно сильно в STL.


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


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

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


с C++11, у нас есть три вида смарт-указатель, i.e, shared_ptr, unique_ptr и weak_ptr, шаблон за ними:Прокси-шаблон.