2010-02-10 7 views
11

В чем разница между библиотекой GNU C++ (libstdC++), "C++ Standard Library", "Standard Template Library" и «SGI STL». При программировании в Linux с компилятором GCC и программировании в Windos в MSVC (MicroSoft Visual C++), который по умолчанию используют стандартные библиотеки C++? Спасибо!версии стандартной библиотеки C++

ответ

6

Стандартная библиотека C++ - общее определение того, какая функциональность/поведение должна предоставляться библиотекой (строки, пары, iostream, контейнеры, алгоритмы и т. Д., Хотя специфика варьируется в зависимости от версии стандарта C++).

Стандартная библиотека шаблонов (STL) - часть стандартной библиотеки C++, которая связана с контейнерами и алгоритмами (и итераторами, которые объединяют эти два). STL не был частью исходной библиотеки C++.

libstdC++ - конкретная реализация стандартной библиотеки C++.

SGI STL - конкретная реализация STL-части стандартной библиотеки C++. Я считаю, что это была также одна из первых версий STL. Прежде чем STL стал частью библиотеки C++, разработчикам пришлось загружать STL отдельно (так же, как в настоящее время мы делаем с Boost).

+2

Um, STL _was_ часть исходного стандарта C++ 1998 года. (Фактически, включение STL, начатое в конце процесса стандартизации, значительно задержало первый стандарт C++.) SGI STL является специфическим (Я думаю, что это даже оригинальная) реализация STL. Не все из STL попали в стандарт C++ (например, 'slist'), а некоторые из того, что в последнем, не поступали из STL (например,' std :: string' в качестве контейнера STL). – sbi

+0

«STL не был частью исходного стандарта C++» - это можно рассматривать как правильное - стандарт C++ нигде не относится к чему-то, что называется «STL», или неправильно в том, что контейнеры и алгоритмы, составляющие STL, всегда были частью стандарта C++. – 2010-02-10 21:09:21

+1

STL не был в ARM, который может считаться своего рода стандартным документом. Это было в первом официальном стандарте. –

4

Говоря только о происхождении компонентов STL стандартной C++ библиотеки, используемые по умолчанию:

  • MSVC использует библиотеки Dinkumware (или по-видимому подмножество их, потому что Dinkumware будет продавать вам аддон библиотеки для MSVC также: -P)
  • GCC использует расширенную версию SGI STL как часть libstdC++

Если вы хотите поменять на STL, есть и другие варианты реализации STL, как STLport. Выбрать свой яд. :-P

+0

Вы путаете «STL» и «стандартную библиотеку C++». Это распространенная ошибка, но, тем не менее, ошибка. – sbi

+0

@sbi: Нет, я не смущен насчет этих двух, но я пытался придумать способ ответить на вопрос OP. Но спасибо за ваши мысли (и ваш downvote). : -P –

Смежные вопросы