"STL" был написан Александром Степановым задолго до стандартизации C ++. C ++ существовал до 80-х годов, но то, что мы сейчас называем "C ++", является языком стандартизирован в ISO / IEC 14882: 2014 (и более ранних версиях, таких как ISO / IEC 14882: 2011).
STL уже широко использовалась в качестве библиотеки для C ++, предоставляя программистам доступ к контейнерам, итераторам и алгоритмам. Когда произошла стандартизация, языковой комитет разработал части стандартной библиотеки C ++ (которая является частью языкового стандарта) так, чтобы очень соответствовать STL.
На протяжении многих лет многие люди, в том числе известные авторы книг, и различные веб-сайты продолжали называть Стандартную библиотеку C ++ «STL», несмотря на то, что эти две сущности разделены и есть некоторые различия. Эти различия еще более заметны в новом стандарте C ++, который включает в себя различные функции и значительно изменяет некоторые классы.
Исходный STL теперь часто называют «реализацией стандартной библиотеки шаблонов C ++» (скорее наоборот, к реальной истории!), Точно так же, как ваша Microsoft Visual Studio или GCC поставляет реализацию стандартной библиотеки C ++. Но «Стандартная библиотека шаблонов» и «Стандартная библиотека» - это не одно и то же.
Битва заключается в том, должна ли текущая Стандартная библиотека называться «STL» полностью или частично, и / или имеет ли значение то, как она называется.
Для "STL"
Существует школа мысли, которая утверждает, что теперь все знают, что «STL» означает стандартную библиотеку, точно так же, как все теперь знают, что «C ++» является стандартизованным языком ISO.
Сюда также входят те, кто считает, что на самом деле это не имеет значения, если все стороны понимают, о чем идет речь.
Этот термин стал еще более распространенным благодаря природе зверя, многие из которых активно используют функцию C ++, известную как «шаблоны».
Для "стандартной библиотеки C ++" (или stdlib)
Однако есть другая школа мысли, к которой я присоединяюсь, которая утверждает, что это сбивает с толку. Люди, изучающие C ++ впервые, не знают об этом различии и могут не замечать небольших языковых различий.
Автор этой статьи много раз встречал людей, которые полагали, что вся Стандартная библиотека C ++ является STL, включая функции, которые никогда не были частью самой STL. Большинство активных сторонников «STL», напротив, точно знают, что они имеют в виду, и отказываются верить, что не все «это понимают». Ясно, что использование этого термина неоднородно.
Кроме того, существуют некоторые библиотеки, подобные STL, которые фактически являются реализациями исходного STL, а не стандартной библиотеки C ++. До недавнего времени одним из них был STLPort (и даже там путаницы изобилуют!).
Кроме того, стандарт C ++ нигде не содержит текста «STL», и некоторые люди обычно используют фразы вроде «STL включен в стандартную библиотеку C ++», что явно неверно.
Я верю, что продолжение распространения этого термина таким образом приведет к вечному непониманию. Увы, попытки что-то изменить, даже если предполагается, что это к лучшему, могут оказаться совершенно контрпродуктивными. Возможно, мы навсегда застряли в двусмысленности.
Заключение
Я понимаю, что этот пост был немного предвзятым: я написал статью, на которую вы ссылались. :) В любом случае, я надеюсь, что это поможет немного лучше объяснить битву.
Обновление от 13 апреля 2011 г.
Вот три идеальные примеры тех, кто использует STL для обозначения всего C ++ Стандартная библиотека. Меня по-прежнему сбивает с толку то, что так много людей слепо клянутся, что никто никогда этого не делает, хотя это видно почти каждый день.
person
Lightness Races in Orbit
schedule
05.03.2011
STL
изначально не разрабатывался вSGI
, он был разработан Степановым в Hewlett Packard и был официально принят в стандарт C ++ по крайней мере за год до того, какSGI
выпустил их реализацию. Степанов активно работал с членами Стандартного комитета (особенно с Бьярном Страуструпом) над его включением в стандартC++
, а сам Степанов назвал включение библиотеки в Стандартную библиотекуSTL
. Таким образом, терминSTL
всегда ассоциировался с его включением в Стандартную библиотеку, даже его автором и теми, кто помог ему разработать предложение. - person Galik   schedule 21.05.2017C++
автор продолжает называть эти части Стандартной библиотекиSTL
, ссылаясь на контейнеры и алгоритмы. Этот термин никогда не использовался для обозначения Стандартной библиотеки в целом в каком-либо авторитетном тексте. - person Galik   schedule 21.05.2017STL
называет его частью стандартной черновой библиотеки C ++ в этой статье с сайта1995
stepanovpapers.com/ BYTE_com.htm Стандартная библиотека шаблонов - это структура структур данных (называемых контейнерами в STL) и алгоритмов, принятых как часть проекта стандарта C ++. Эталонная реализация STL стала общественным достоянием Hewlett-Packard (ее можно загрузить с сайта butler.hpl.hp.com), и все большее число коммерческих поставщиков в настоящее время поставляют STL. - person Galik   schedule 21.05.2017STL
был официально принят в стандарт комитетом по стандартам. Стандарт в то время все еще находился в стадии проекта, и Степанов работал с членами комитета по стандартам, в основном Страуструпом, над деталями библиотеки для ее включения в стандарт. В статье он буквально говорит, что это принято как часть проекта стандарта C ++. - person Galik   schedule 07.02.2019