프로그래밍 언어/C++

"STL"과 "C ++ 표준 라이브러리"의 차이점

Rateye 2021. 7. 16. 10:15
728x90
반응형

 

질문 : "STL"과 "C ++ 표준 라이브러리"의 차이점은 무엇입니까?

누군가가 가져온 이 기사를 주장 (내가 지나친 의역있어)가 STL의 용어는 SGI의 STL에서 촬영 한 부분 대신 전체 C ++ 표준 라이브러리를 참조 오용 나의 관심.

(...) STL (SGI에서 디자인 된)을 사용하는 사람이 거의 없다는 사실에도 불구하고 "STL"을 의미합니다.

C ++ 표준 라이브러리의 일부는 STL의 일부를 기반으로하고 있으며, 많은 사람들 (여러 작성자 및 악명 높은 오류가있는 cplusplus.com 포함)이 여전히 "STL"이라고 부르는 부분입니다. 그러나 이것은 정확하지 않습니다. 실제로 C ++ 표준은 "STL"을 언급하지 않으며 둘 사이에 내용 차이가 있습니다.

(...) "STL"은 SGI STL을 기반으로하는 stdlib의 비트를 나타내는 데 거의 사용되지 않습니다. 사람들은 그것이 전체 표준 라이브러리라고 생각합니다. CV에 표시됩니다. 그리고 그것은 오해의 소지가 있습니다.

저는 C ++의 역사에 대해 거의 알지 못해서 기사의 정확성을 판단 할 수 없습니다. STL이라는 용어를 사용하지 않아야합니까? 아니면 이것은 고립 된 의견입니까?

답변

"STL"은 C ++가 표준화되기 훨씬 전에 Alexander Stepanov에 의해 작성되었습니다. C ++는 80 년대까지 존재했지만 지금은 " C ++ "라고 부르는 것은 ISO / IEC 14882 : 2014 (및 ISO / IEC 14882 : 2011과 같은 이전 버전)에서 표준화 된 언어입니다.

STL은 이미 C ++ 용 라이브러리로 널리 사용되어 프로그래머에게 컨테이너, 반복기 및 알고리즘에 대한 액세스를 제공합니다. 표준화가 일어 났을 때, 언어위원회는 매우 밀접하게 STL과 일치하는 (언어 표준의 일부 임) C ++ 표준 라이브러리의 일부를 설계했습니다.

수년 동안 저명한 서적 저자 및 다양한 웹 사이트를 포함한 많은 사람들은 두 개체가 분리되어 있고 약간의 차이가 있음에도 불구하고 C ++ 표준 라이브러리를 "STL"이라고 계속 언급했습니다. 이러한 차이점은 다양한 기능을 포함하고 일부 클래스를 크게 변경하는 다가오는 새로운 C ++ 표준에서 더욱 두드러집니다.

Microsoft Visual Studio 또는 GCC가 C ++ 표준 라이브러리의 구현을 제공하는 것과 동일한 방식으로 원래 STL은 이제 "C ++ 표준 템플릿 라이브러리의 구현"(실제 기록을 거꾸로)이라고합니다. 그러나 "표준 템플릿 라이브러리"와 "표준 라이브러리"는 같은 것이 아닙니다.

전투는 현재 표준 라이브러리가 전체적으로 또는 부분적으로 "STL"이라고 불려야하는지 여부 및 / 또는 그것이 부르는 것이 중요한지 여부에 관한 것입니다.

"STL"용

"STL"이 표준 라이브러리를 의미한다는 것을 이제 모두가 알고 있다고 말하는 학교가 있습니다. "C ++"가 ISO 표준 언어라는 것을 이제 모두가 알고 있습니다.

또한 모든 당사자가 대화 내용을 이해하는 한 그게 중요하지 않다고 믿는 사람들도 포함됩니다.

이 용어는 짐승의 특성상 훨씬 더 널리 사용되는 용어로, 대부분 "템플릿"으로 알려진 C ++ 기능을 많이 사용합니다.

"C ++ 표준 라이브러리"(또는 stdlib)의 경우

그러나 이것이 혼란 스럽다고 말하는 또 다른 생각의 학교가 있습니다. 처음으로 C ++를 배우는 사람들은이 차이를 모르는, 작은 언어의 차이를 알 수 없습니다.

이 기사의 저자는 STL 자체의 일부가 아닌 기능을 포함 하여 전체 C ++ 표준 라이브러리가 STL이라고 믿는 사람들을 여러 번 만났습니다. 반대로 대부분의 "STL"지지자들은 그들이 의미하는 바를 정확히 알고 모든 사람이 "그것을 얻지 못한다"는 것을 믿지 않는다. 분명히 용어의 사용법은 균일하지 않습니다.

또한 실제로 C ++ 표준 라이브러리가 아닌 원본 STL의 구현 인 STL과 유사한 라이브러리가 있습니다. 최근까지 STLPort 는 그중 하나였습니다 (그리고 거기에서도 혼란이 많습니다!).

또한 C ++ 표준에는 "STL"이라는 텍스트가 어디에도 포함되어 있지 않으며 일부 사람들은 "STL이 C ++ 표준 라이브러리에 포함되어 있습니다"와 같은 문구를 습관적으로 사용합니다.

이런 식으로 용어의 사용을 계속 전파하면 영원히 계속되는 오해로 이어질 것이라는 것이 나의 믿음입니다. 안타깝게도, 상황을 바꾸려는 시도는 전적으로 비생산적 일 수 있습니다. 우리는 영원히 이중 의미에 갇혀있을 수 있습니다.

결론

이 게시물이 약간 편향된 것에 감사드립니다. 링크 한 기사를 작성했습니다. :) 어쨌든, 이것이 전투를 좀 더 잘 설명하는 데 도움이되기를 바랍니다.

업데이트 2011 년 4 월 13 일

다음은 전체 C ++ 표준 라이브러리를 참조하기 위해 "STL"을 사용하는 사람의 세 가지 완벽한 예입니다. 너무나 많은 사람들이 맹인을 맹세하여 거의 매일 보는 것이 분명 할 때 아무도 이렇게하지 않습니다.

출처 : https://stackoverflow.com/questions/5205491/whats-the-difference-between-stl-and-c-standard-library
728x90
반응형