No Rules Rules

STL이란? (feat. Modern C++) 본문

언어/STL

STL이란? (feat. Modern C++)

개발하는 완두콩 2022. 7. 20. 13:23
728x90
반응형

C++ 개발자가 필수로 알아야 하는 것중에 하나는 STL 입니다. 사실 OOP 개념에 대해서, Code의 Design 방법에 대해서 등도 중요하지만 시니어 레벨의 개발자 (보통 대리급정도 되겠습니다.) 에게 가장 필요한 것은 코딩 방법이라고 생각합니다. 왜냐면 일반적으로 SW 구조를 설계하는 경험보다는 선배가 만들어놓은 구조 속에서 코딩하는 일이 더 많기 때문이죠.

아무튼 STL이란 Standard Template Library 의 약어입니다. C++에서 제공하는 표준 라이브러리인데, 쉽게 말해서 우리가 사용하는 라이브러리 파일(*.lib, *.dll 과 같이)처럼 C++이라는 언어가 사용하는 라이브러리 중 하나라고 보시면 됩니다.

자료구조 대부분의 선형 구조와 비선형 구조를 제공하며, 여러가지 알고리즘을 제공하는 아이죠.

개인적으로 STL에 대해서 알기 전에 자료구조를 먼저 학습하는 것이 좋다고 생각합니다. 사실 그냥 사용하더라도 상관은 없습니다만 여러 코드를 보다보면 list가 더 좋은 성능을 발휘하는 경우임에도 vector를 고집하는 경우가 많더라구요.

만약 STL의 내용부터 보려고 하신다면, 가급적 C/C++에 기재한 글들을 먼저 보시길 권장합니다.

C++언어에 대해서 중급 이상의 이해도를 가졌다는 가정하에 STL을 설명하려고 하기 때문입니다.

반응형

각설하고, C++은 크게 클래식 C++과 모던 C++로 나눌 수 있습니다. 통상 클래식 C++의 시작은 98년에 시작되었다고 하지만 이는 안정적인 최종본이 나온 시점이며 그 이전부터 C++은 존재해왔습니다.(C++이라는 이름은 79년부터 시작되었지만 OOP의 개념을 갖는 진짜 C++은 83년부터 시작되었습니다.) 이때의 C++을 통상 C++98 이라고 합니다. 즉, C++98 이전과 이후로 C++의 역사가 나뉜다고 해도 과언이 아닙니다. (C++03도 있지만, 사용자의 관점에서 변한 것은 없습니다.)

그러던 중 바로 2011년, C++11이 나오게 됩니다. 새로운 C++의 시작이 된 시점이죠. (사실 새로운 C++이라기보단 기존의 기능 + boost library의 다수 기능 편입 이 맞다고 봅니다. boost가 편입되었다는게 어떻게 보면 혁신이었죠.) 현재는 C++14, C++17, C++20까지 온 상태고, C++23이 나온다고 하죠. (개인적으로 boost의 asio 기능이 포함된다는 썰이 있어 상당히 기대중입니다.) 여기서 STL 개념의 시작이 모던 C++부터입니다. 별도의 도서가 집필될 정도로 엄청난 양을 자랑하고 그 기능또한 상당히 많습니다. 즉, STL은 새로운 언어는 아니지만 C++에서 지원하는 다양한 기능(컴파일 속도 향상, 알고리즘 속도 향상 등)을 제공하는 아이라고 보면 될것 같습니다.

이후 다양한 STL의 자료구조와 알고리즘에 대해서 하나하나씩 설명해보도록 하겠습니다.

728x90
반응형
Comments