stl 공부방법

canuyes의 이미지

안녕하세요?
공부중에 궁금한점이 생겨 잠들기 전에 질문 올립니다.
저는 c와 c++,자료구조,알고리즘을 공부한 학생입니다.
저는 지금 주로 c++을 사용합니다.
저는 요즘 제가 c++을 c처럼 사용중이라는 느낌을 지울수가 없습니다.
차근차근 생각해보니 저의 문제점은 stl을 전혀 사용할 줄 모른다는 것입니다.
저는 스택,큐 ,퀵소트 등의 자료구조를 직접 만들어 사용하고 있습니다.
Stl을 공부하면 이러한 고생을 할필요도 없고 좀더 c++스러운 코드를 짤 수 있다고 들었습니다.
따라서 stl을 공부하려고하는데 어디서 자료를 얻어야 할지 모르겟습니다.
추천서적이나 링크부탁드립니다.

sjw0687의 이미지

이 사이트에서 스택, 큐, 퀵소트 등의 stl을 검색하셔서 상세히 알아보실 수 있어요. 예제도 같이 있어요.
http://www.cplusplus.com/reference/

pokev25의 이미지

yielding의 이미지

STL을 사용한다고 해서 고생을 안하는 것은 아니에요. STL(정확히 말하면 C++ Standard Library, STL이라는 용어는 deprecated되었습니다)은 공부할 것이 많습니다.
완전히 다 모르는 상태에서 필요한 것만 쓸 때의 찜찜함도 있고..

여담입니다만, STL은 container라이브러리 보다 일반화된 타입에 대한 generic algorithm과 iterator 설계가 핵심이라고 볼 수 있습니다.
(generic programming techniques, http://www.boost.org/community/generic_programming.html)

제가 쓰는 도구 중 c++ standard library 공부와 직/간접적으로 관련이 있는 내용 간략히 적어보겠습니다.

1. 컴파일러
clang++, g++4.7 (osx 에서 사용 c++11 표준 코드를 거의 다 컴파일) 참고) http://clang.llvm.org/cxx_status.html
vs2012

2. 3rd party library
boost-1.53,
google-test, google-mock(test)

3. vim plugin
clang_complete (vim 환경에서 vc처럼 자동 완성 기능을 제공합니다.)
TagBar, snipMate

4. 레퍼런스 사이트
http://en.cppreference.com/w/cpp 언어의 신규 개념에 대한 예제, standard library에 대한 예제도 좋습니다.
http://www.boost.org (boost library 공부용)

5. 책
SICP(Structure and Interpretation of Computer Programs, 컴퓨터 프로그의 구조와 해석)
=> 이 책에서 소개되는 함수형 프로그래밍의 개념이 최근 modern c++의 주된 특징인 함수형 언어 패러다임을 공부하는데 도움이 많이 됩니다.

한 번 더 말씀드리지만 STL을 쓰기 때문에 코드가 c++ 다와진다고 생각하지 마시고 왜 STL이 좋다고 하는지를 이해하려고 노력하는게 더 공부가 될거에요.
c++가 좋지만 c++ 사용법 공부에만 파묻히는 오류를 피하는 것도 잊지 마시고...

Life rushes on, we are distracted

어허야의 이미지

궁금해서 질문글 쓸 시간에 KLDP에서 STL 책으로 검색만 해도 좋은 답글을 많이 읽을 수 있습니다.

canuyes의 이미지

답변 감사드립니다.
일단 어허야님 답변도 감사드립니다. 검색 해보았습니다.
답글을 본 이후에 좀 더 저의 상황을 추가 설명하자면, 저는 지금 알고리즘 공부에 흥미가 생겨
알고리즘을 심화 학습하고 있습니다.
조금 더 심화된 학습을 하다보니
이제 배열의 기본적인 알고리즘, 자료구조등은 그냥 통째로 stl로 만들어버리는 일이 많아졌습니다.
따라서, 저는 알고리즘에서 사용되는 stl을 레퍼런스 형식으로 공부하면서 하나하나 배워가기로 정했습니다.
혹시나 조언 해주실 것이 더 있으시다면 답글 달아주십시오.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.