sgi stl 과 stlport 의 차이가 뭔가요?

ssehoony의 이미지

gcc(3.0 이상) 에 포함되어 있는 stl 은 어떤 stl 인가요?
gcc 에서 별도 제작한건가요? 아니면 sgi 나 stl 꺼를 이용한건가요?

그리고 sgi stl 과 stlport 와의 주된 차이점은 뭔가요?

마지막으로 이 외에 특별한 특징을 가진 유명한 stl 이 있나요?

-------------------------------------------------------------------------------------

첨언을 하자면....

여기 저기서 stlport 이야기를 많이 하길래 해당 사이트에 가서
몇가지를 능력껏 읽어 봤는데요.
기본은 sgi stl 을 기본 베이스로 시작해서 다양한 플랫폼에서 컴팔 할 수 있도록
했다는 내용이 있고 쓰래드에 대한 안정성 같은 몇가지의 이야기가 나오더군요
또한 vs .net 2003 에는 기본으로 stlport 가 설치가 되고
c++ builder 6 에도 기본으로 stlport 가 설치되더군요.

전 기존에 stl 은 sgi stl 이 유명하다는 것 정도만 알고 있었습니다.
그리고 개발할때는 플랫품에 기본 설치되어 있는 stl 을 사용했습니다.
그래서 표준에 벗어나는 건 사용을 하지 않았죠
예를 들면 hash 가 최적인 곳에서 대신에 map 을 이용해서 대처한다든지 하는 방식을 사용했습니다.
그런데 여기 저기 글을 읽어보면 주로 stlport 를 사용하는 것 같던데
왜 그걸 사용하는지에 대한 언급을 찾을 수는 없었습니다.

결국 스스로 해결 못하고 몇가지 궁금한게 있어서 이렇게 질문 드립니다.

ageldama의 이미지

확장(stdext::*...)을 제외한다면 STLport가 더 표준에 근접한 경우가 많은 것 같던데요? :)
컴파일러와 함께 제공되는 STL 구현이 표준과 맞지 않거나 문제가 있는 경우에 주로 써왔습니다.

----
The future is here. It's just not widely distributed yet.
- William Gibson

cdecl의 이미지

sgi STL은 말그대로 sgi란 회사에서 구현해 놓은 STL라이브러리 입니다.
그리고 그 sgi STL을 여러 플랫폼에 맞게 사용할수 있도록 Boris Fomitchev란 사람이 포팅 해놓은 것이 STLport 란 것입니다.

포팅의 존재 이유는 ...
STL 자체는 컴파일러가 코드만 컴파일 해줄수 있다면 그냥 포함시켜 사용할수 있지만 실제로 STL 구현물안에는 시스템 종속적인 입출력이나 로케일쪽의 라이브러리도 포함하고 있기 때문입니다.
그리고 이런 종속적인 부분은 배제하고 순수한(?) STL(컨테이너, 반복자, 알고리즘)만 사용한다고 하더라도 컴파일러가 표준을 100% 지원하지 않는 이상 해당 컴파일러에 맞게 코드를 수정 해줘야 합니다.

이런 이유때문에 STLport란 것이 나오게 되었습니다.

gcc는 sgi STL을 기반으로 gcc 컴파일러에 맞게 포팅해서 사용하는것으로 알고 있고 볼랜드 C++빌더도 버전 6에 와서 전에 쓰던 로그웨이브란 회사의 라이브러리를 버리고 새로 STLport을 사용하고 있습니다.
그러나 MS의 컴파일러는 dinkumware사의 STL 구현물을 사용하고 있습니다.

sgi STL이 많이 사용되고 공신력이 있는 이유는 STL의 창시자인 Alexander Stepanov의 연구가 Silicon Graphics사로 옮겨 진행 되었고 그 연구의 결과가 sgi STL이기 때문이라고 알고 있습니다.
http://www.stlport.org/resources/StepanovUSA.html

sgi STL(STLport 도 sgi STL 에 속한다고 봐도 무방할것이라 생각합니다.)외에 유명한 라이브러리라면 dinkumware의 STL이 있습니다.
STL의 양대 산맥(?)이라고 봐도 ...

dinkumware의 STL이 인정받는 이유는 dinkumware STL의 구현자이자 이 회사의 오너로 알고 있는 P.J. Plauger란 사람 때문에 라고 생각합니다.
P.J. Plauger는 초대 C언어 표준위원회 위원장을 지냈으며 C언어의 표준 라이브러리쪽에 가장 영향력 있는 사람중에 한명입니다.

참고로 VC++6.0 STL까지는 P.J. Plauger의 이름으로 Copyright가 되어 있으며 VC++.net 2002 부터 dinkumware란 이름으로 Copyright가 되어 있습니다.

http://www.sgi.com/tech/stl/
http://www.stlport.org/
http://www.dinkumware.com/

--
cdecl

ssehoony의 이미지

자세한 답변 감사합니다.
많은 도움이 됐습니다.

jinoos의 이미지

감사합니다.

cdecl wrote:
sgi STL은 말그대로 sgi란 회사에서 구현해 놓은 STL라이브러리 입니다.
그리고 그 sgi STL을 여러 플랫폼에 맞게 사용할수 있도록 Boris Fomitchev란 사람이 포팅 해놓은 것이 STLport 란 것입니다.

포팅의 존재 이유는 ...
STL 자체는 컴파일러가 코드만 컴파일 해줄수 있다면 그냥 포함시켜 사용할수 있지만 실제로 STL 구현물안에는 시스템 종속적인 입출력이나 로케일쪽의 라이브러리도 포함하고 있기 때문입니다.
그리고 이런 종속적인 부분은 배제하고 순수한(?) STL(컨테이너, 반복자, 알고리즘)만 사용한다고 하더라도 컴파일러가 표준을 100% 지원하지 않는 이상 해당 컴파일러에 맞게 코드를 수정 해줘야 합니다.

이런 이유때문에 STLport란 것이 나오게 되었습니다.

gcc는 sgi STL을 기반으로 gcc 컴파일러에 맞게 포팅해서 사용하는것으로 알고 있고 볼랜드 C++빌더도 버전 6에 와서 전에 쓰던 로그웨이브란 회사의 라이브러리를 버리고 새로 STLport을 사용하고 있습니다.
그러나 MS의 컴파일러는 dinkumware사의 STL 구현물을 사용하고 있습니다.

sgi STL이 많이 사용되고 공신력이 있는 이유는 STL의 창시자인 Alexander Stepanov의 연구가 Silicon Graphics사로 옮겨 진행 되었고 그 연구의 결과가 sgi STL이기 때문이라고 알고 있습니다.
http://www.stlport.org/resources/StepanovUSA.html

sgi STL(STLport 도 sgi STL 에 속한다고 봐도 무방할것이라 생각합니다.)외에 유명한 라이브러리라면 dinkumware의 STL이 있습니다.
STL의 양대 산맥(?)이라고 봐도 ...

dinkumware의 STL이 인정받는 이유는 dinkumware STL의 구현자이자 이 회사의 오너로 알고 있는 P.J. Plauger란 사람 때문에 라고 생각합니다.
P.J. Plauger는 초대 C언어 표준위원회 위원장을 지냈으며 C언어의 표준 라이브러리쪽에 가장 영향력 있는 사람중에 한명입니다.

참고로 VC++6.0 STL까지는 P.J. Plauger의 이름으로 Copyright가 되어 있으며 VC++.net 2002 부터 dinkumware란 이름으로 Copyright가 되어 있습니다.

http://www.sgi.com/tech/stl/
http://www.stlport.org/
http://www.dinkumware.com/

목적을 찾아서... jiNoos

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.