STL이란?
코딩을 배울 때 C로 시작한 사람들은 대개 기초가 잡히면 C++로 넘어온다.
이때 C와는 다른 새로운 것이 많이 추가되어 있는 것을 볼 수 있는데, 그중 하나가 STL이다.
그럼 STL은 무엇일까?
STL은 Standard Template Library의 약자이다.
간단하게 설명하자면 여러 자료 구조, 함수, 알고리즘 등을 쓰기 쉽게 정형화해서 라이브러리화 해둔 것이다.
여기서 라이브러리란?
프로그램에서 사용할 수 있도록 미리 만들어져 있는 함수와 변수들의 모음집이다.
예를 들면 C에서 지겹도록 쓴 <stdio.h> 라이브러리에는 printf, scanf등 표준 입출력 함수에 대한 것들이 담겨있다.
다른 라이브러리로는 <iostream>, <algorithm>, <string> 등이 있고, clang 컴파일러에는 기본적으로 포함이 안되어있지만 GNU 컴파일러에 있는 <bits/stdc++.h>가 있다.
다시 STL로 돌아가자. STL은 C++을 위한 라이브러리로 알고리즘, 컨테이너, 함수자, 반복자 4가지로 구성되어 있다.
여기서 가장 큰 것을 차지하는 것은 컨테이너이다.
많은 분들이 STL 컨테이너에 해당하는 vector, map 등에 대해 찾다가 STL에 대한 궁금증으로 여기에 들어왔을 것으로 예상한다.
그만큼 C++에서 vector와 map을 쓰는 일이 꽤 많고, 편리하다.
STL Container 컨테이너
흔히 자료 구조라 하며, 데이터를 저장하는 객체이다. STL 컨테이너에는 표준 연속 컨테이너인 vector, deque, list 등이 있고, 표준 연관 컨테이너인 set, multiset, map, multimap 등이 있다.
STL Iterator 반복자
반복자는 포인터와 비슷한 개념으로, 각 컨테이너의 데이터 위치를 가리킨다.
반복문 등에서 컨테이너에 접근해서 데이터를 가져올 때 쓰면 용이하다.
STL Algorithm 알고리즘
자주 사용하며 유용한 알고리즘 일부가 STL로 제공되며, 그 예로 sort, binary_search, lower_bound 등 정렬, 검색, 연산 등을 해결하는 함수가 있다.
STL Function Object 함수자
STL은 함수 호출 연산자 operator()를 오버로드하는 클래스들을 포함한다.
이때 이런 클래스들의 인스턴스를 함수자라 부른다.
정리
STL은 설명해야 하는 부분이 꽤 많아 각각의 내용들을 설명하는 링크로 첨부해두었다.
궁금한 부분이 있는 것은 각 링크를 타고 들어가서 내용을 읽어보면 이해가 잘 될 것이다.
'C++' 카테고리의 다른 글
[C++ vector] 사용법 (0) | 2022.07.28 |
---|