STL(Standard Template Library)
표준 템플릿 라이브러리.
많은 프로그래머들이 공통적으로 사용하는 자료 구조와 알고리즘들을 template로 구현한 클래스
namespace std에 포함되어있음
컴포넌트
컨테이너
: 자료를 저장하는 구조
벡터, 리스트, 집합, 큐, 스택과 같은 자료 구조반복자
컨테이너 안에 요소를 순차적으로 처리하가위한 컴포넌트알고리즘
정렬이나 탐색과 같은 다양한 알고리즘을 구현
STL의 장점
STL은 전문가가 만들어서 테스트를 거친 검증된 라이브러리
STL은 객체 지향 기법과 일반화 프로그래밍 기법을 적용하여서 만들
어졌으므로 어떤 자료형에 대해서도 적용
STL을 사용하면 개발 기간을 단축할 수 있고 버그가 없는 프로그램을
만들 수 있다.
STL 컨테이너
순차 컨테이너 : 자료를 순차적으로 저장
연관 컨테이너 : 키 : 값으로 저장
순차 컨테이너
vector : 동적배열처럼 동작, 뒤에서 자료가 추가
deque : 백터와 유사, 앞에서도 자료가 추가될 수 있음
list : 자료 추가하는 연산이 효율적
벡터
벡터 == 동적배열 == 스마트배열
템플릿으로 설계
Kvector와 유사
벡터에서 크기보다 큰 인덱스 위치값을 수정하면 : run time error 일어남
print_vector( 벡터이름 ) :
vector.clear : 원소도 싹 다 없애버림
front() back()
push_back(), pop_back()
push_back() : 벡터의 크기를 1만큼 증가
pop_back() : 벡터의 크기를 1만큼 감소
벡터에 원소를 추가할 떄 주의할 점
: 바로 값을 넣으면 안됨.
push_back()이나, pop_back() 이용햐야함.
반복자
현재 처리하는 자료의 위치
컨테이너에서 다음 요소를 가리키기 위한 ++ 연산자
insert()
push / back 을 이용해서 원소를 추가
deque
insert() / erase() of deque<>
list
c++리스트에는 []연산자가 없다.
bidirectional iterator 에는 [], +, - , < , > 연산자가 없음
it ++; it++; it++
auto end_it = l2.end(); end_it--;
it = l2.erase(it,end_it);
연관 컨테이너 : key - value로 접근
- 종류:
- 집합 (set)
- 맵 (map)
- 다중-집합 (multiset)
- 다중-맵 (multimap)
집합과 다중집합
집합은 동일한 키를 중복해서 가질 수 없다.
원소들은 크기순으로 정렬되어 저장된다.
iterators are bidirectional
맵과 멀티맵
multimap 에는 operator[]가 없다. (key가 unique 하지 않으므로)
'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글
TIL (22.06.07) ( * , & 관련 ) (0) | 2022.06.08 |
---|---|
TIL (22.06.05) (0) | 2022.06.05 |
TIL (22.05.25) (0) | 2022.05.25 |
TIL (22.05.23) (0) | 2022.05.23 |
TIL (22.05.18) (0) | 2022.05.18 |