주니어 개발자의 대나무숲
STL 사용법을 익혀야 하는 이유! 본문
C++의 가장 자주 사용되는 라이브러리 중 하나인 STL(Standard Template Library)에 대해 한 번쯤은 들어보셨을 겁니다.
그런데 왜 PS를 공부하기 전에 STL의 사용법을 익혀야 할까요? 그 이유는 문제를 푸는 데 필요한 알고리즘들을 빠르게 구현할 수 있기 때문입니다.
공부를 하다 보면, 더 빠른 알고리즘을 위해 구현이 너무 오래 걸리는 알고리즘을 선택하는 오류를 범하는 경우가 있습니다. 하지만, 제한된 시간 내에 많은 문제를 풀어야 하는 대회 상황에서는 구현에 드는 시간도 고려해야 합니다. 문제를 푸는 시간의 대부분은 생각해낸 알고리즘을 '구현'하는 시간이기 때문입니다. 문제의 제한시간은 대체적으로 5초 이내이기 때문에 작성한 프로그램이 답을 출력해낼 때까지 걸리는 시간은 구현에 드는 시간에 비하면 아래 그림과 같이, 상대적으로 미미하다고 할 수 있습니다.
<구현 시간 >>>>>>> 실행 시간>
STL의 구성은 크게 네 가지(container, iterator, algorithm, functor)로 나눠집니다. PS의 경우, 자료구조 라고 할 수 있는 컨테이너(container)와 각 컨테이너를 다룰 수 있는 여러 함수들이 구현되어 있는 알고리즘(algorithm), 이 두 가지가 핵심이라고 할 수 있습니다.
각 컨테이너 마다 다른 특징을 가지고 있지만, 선언법은 매우 유사하기 때문에 먼저 짚고 넘어가도록 하겠습니다.
모든 컨테이너는 다음과 같은 문법으로 선언합니다.
컨테이너명 <자료형> 변수명; |
다음 게시물들을 통해 각 컨테이너의 정의와 용도, 멤버 함수와 예제를 통해 사용법을 익혀보도록 하겠습니다.
pair, vector (http://sarah950716.tistory.com/4)
queue, stack (http://sarah950716.tistory.com/5)
map, set (http://sarah950716.tistory.com/6)
'PS (Problem Solving) > 개념' 카테고리의 다른 글
[그래프] 인접 행렬과 인접 리스트 (21) | 2016.12.11 |
---|---|
[C++/STL]map, set (4) | 2016.10.19 |
[C++/STL]queue, stack (4) | 2016.10.19 |
[C++/STL]pair, vector (11) | 2016.10.19 |
PS를 할 때, 유의할 점! (6) | 2016.10.17 |