일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 누적합
- 백준
- 백트래킹
- 알고리즘문제해결전략
- BFS
- 다이나믹프로그래밍
- DFS
- 스택
- stack
- DP
- 이분탐색
- 종만북
- Algospot
- BOJ
- 그리디
- 동적계획법
- backtracking
- 세그먼트트리
- acm
- priority_queue
- 분리집합
- union-find
- 완전탐색
- Greedy
- 문자열
- 너비우선탐색
- 재귀
- 유니온파인드
- 분할정복
- 알고스팟
- Today
- Total
DAMPER's 낙서장
3. (1) C++ STL (Standard Template Library) 본문
STL(Standard Template Library) 이란?
C++ 표준 템플릿 라이브러리로, 자료구조와 알고리즘 등을 템플릿으로 제공하는 라이브러리를 말합니다.
STL의 구성요소로는 Container, Iterator, Algorithm, Function Object 등등 다양한 것들이 있지만
- 객체를 저장하는 Container (자료구조)
- 컨테이너의 요소를 가리키는(요소에 접근할 수 있는) Iterator
이 두가지를 중점으로 설명하겠습니다.
이 글은 간략하게 자주사용하는 것들 위주로 작성되므로, 더 다양한 정보를 원하는 경우 아래 레퍼런스 사이트를 참고하시기 바랍니다.
Container
STL Container 는 크게 두가지로 나뉩니다.
- Sequnece container : vector, array, list, deque 등
- associative container : set, map 등
Sequence container 는 데이터를 선형으로 저장하여 요소에 순차적으로 접근할 수 있는 컨테이너를 말합니다.
Associative container는 데이터를 일정한 규칙에 따라(요소들간의 대소관계) 조직화하여 저장하는 컨테이너를 말합니다.
stack, queue, priority_queue 등 과 같은 컨테이너는 Container adapter 라고 부릅니다.
Container adapter는 간결함과 명료성을 위해 인터페이스를 제한한 시퀀스나 연관 컨테이너의 변형을 말합니다.
이런 여러 컨테이너는 템플릿을 사용하여 어떤 객체 특성이든 전용 컨테이너를 만들 수 있습니다.
int형을 저장하는 vector -> vector<int> v;
string 을 저장하는 set -> set<string> st;
vector<int> 를 저장하는 vector -> vector<vector<int>> vv;
Iterator
Iterator 란 STL 컨테이너에 저장된 요소를 반복적으로 순회하여, 각각의 요소에 대한 접근을 제공하는 객체를 말합니다.
컨테이너의 구조나 요소의 타입과는 관계없이 컨테이너에 저장된 데이터를 순회하는 과정을 일반화한 표현입니다.
컨테이너 요소에 접근할 수 있는 포인터같은 객체라 볼 수 있습니다.
vector<int>::iterator it;
컨테이너::iterator iterator이름;
으로 선언할 수 있습니다.
C++ STL은 알고리즘 문제를 해결하는 것 뿐만아니라, C++ 개발을 하는 데 있어 중요한 역할을 합니다.
물론 장점만 존재하는 것이 아닌 단점도 존재하지만, 특성을 잘 이해하고 개발하는데에도 잘 쓸 줄 알아야합니다.
'Problem Solving > COALA 튜터링' 카테고리의 다른 글
2. 재귀 함수 (0) | 2021.05.03 |
---|---|
1.-(2) 기본 정렬 알고리즘 - Bubble Sort (버블정렬) (0) | 2021.05.03 |
1.-(1) 기본 정렬 알고리즘 - Selection Sort(선택정렬) (0) | 2021.05.03 |
0. Intro (0) | 2021.05.03 |