2010-02-10 7 views
11

GNU C++ 라이브러리 (libstdC++), "C++ Standard Library", "Standard Template Library" 및 "SGI STL"의 차이점은 무엇입니까? 표준 C++ 라이브러리가 기본적으로 사용하는 MSVC (MicroSoft Visual C++)의 Windos에서 컴파일러 GCC 및 프로그래밍을 사용하여 Linux에서 프로그래밍 할 때? 감사합니다. 만 기본적으로 사용되는 표준 C++ 라이브러리의 STL 구성 요소의 출처에 대해 말하기C++ 표준 라이브러리 버전

답변

6

C++ 표준 라이브러리 - C++ 표준 버전에 따라 다르지만 라이브러리 (문자열, 쌍, iostream, 컨테이너, 알고리즘 등)에서 제공해야하는 기능/동작에 대한 일반적인 정의).

표준 템플릿 라이브러리 (STL) - C++ 표준 라이브러리의 일부로 컨테이너와 알고리즘 (및이 두 가지를 결합하는 반복자)과 관련이 있습니다. STL은 원래의 C++ 라이브러리에 포함되지 않았습니다.

libstdC++ - C++ 표준 라이브러리의 특정 구현입니다.

SGI STL - C++ 표준 라이브러리의 STL 부분의 특정 구현입니다. 나는 이것이 또한 STL의 첫 번째 버전 중 하나라고 생각한다. STL이 C++ 라이브러리의 일부가되기 전에 개발자는 STL을 별도로 다운로드해야했습니다 (현재 Boost에서와 동일한 방식으로).

+2

음, STL은 1998 년의 원래 C++ 표준의 일부였습니다. (실제로 표준화 과정에서 시작된 STL의 통합으로 첫 번째 C++ 표준이 상당히 지연되었습니다.) SGI STL은 특정 나는 그것이 원래의 STL 구현이라고 생각한다.) 모든 STL이 C++ 표준 (예 :'slist ')으로 만들지 않았고 후자의 일부는 STL에서 가져 오지 않았습니다 (예 : STL 컨테이너로'std :: string'). – sbi

+0

"STL은 원래의 C++ 표준의 일부가 아닙니다."- 올바른 것으로 간주 될 수 있습니다. C++ 표준에서는 STL을 구성하는 컨테이너와 알고리즘이 항상 부분적이었던 점에서 "STL" C++ 표준. –

+1

STL은 일종의 표준 문서로 간주 될 수있는 ARM에 포함되지 않았습니다. 그것은 최초의 공식 표준이었습니다. –

4

:

  • Dinkumware는 MSVC 당신에게 부가 라이브러리도 판매하기 때문에 MSVC는, 그 Dinkumware 라이브러리 (또는 분명히 하위 집합을 사용합니다 : -P)
  • GCC는

당신이 STL을 교체하려면 된 libstdC++의 일환으로 SGI의 STL의 확장 버전을 사용 된 STLport 같은 다른 STL 구현이있다. 독을 잡아라. : -P

+0

"STL"과 "C++ 표준 라이브러리"를 혼동합니다. 그럼에도 불구하고 일반적인 오류이지만 오류는 있습니다. – sbi

+0

@ 스비 : 아니, 나는 둘에 대해 혼란스럽지 않지만, OP의 질문에 대답하는 방법을 생각하려고했습니다. 그러나 당신의 생각 (그리고 당신의 downvote)에 감사드립니다. : -P –

관련 문제