Game Programming/게임 프로그래밍 C++

[C++] STL

Doanie 2022. 9. 16. 15:28

[C++] STL


STL (Standard Template Library)

여러가지 다른 구조를 보관하기 위한 컨테이너와 컨테이너 내의 요소를 접근하기 위한 반복자, 그리고 컨테이너에 특정한 작업을 위한 알고리즘 클래스로 구성되어 있다.


컨테이너

순차 컨테이너와 연관 컨테이너로 구성되어 있으며, 여러가지 구조 데이터를 보관하는 객체이다.

- 순차 컨테이너 : 요소들을 보관된 순서를 유지할 수 있게 해주며, 어떤 위치든 삽입, 제거가 가능하지만 성능에 있어서는 다른 특성을 가진다. / 벡터, 데큐, 리스트 등

- 연관 컨테이너 : 정렬 연관 컨테이너와 해쉬 연관 컨테이너 두 분류로 존재한다. 특정 요소에 대한 빠른 검색을 제공하며 사용자가 지정한 순서가 아닌 자신의 규칙에 따른 순서로 보관한다. / 세트, 맵, 해쉬 등

반복자

vector<int> vInt;
vector<int>::iterator it;
for(it = vInt.begin(); it != vInt.end(); it++)
{
	int itID = *it;
}

컨테이너 내의 요소를 접근할 수 있게 해주는 객체이며 특정 위치를 나타낸다.

알고리즘

컨테이너 객체의 원소를 다루기 위한 여러 알고리즘으로 검색, 수정, 정렬 등의 역할을 수행한다.


STL의 장점

▹ 확고하고 견실한 코드로 많은 프로그래머들이 사용 중이며 이식성이 좋다.

▹ 각 컨테이너에 맞는 최적화된 알고리즘을 적용하여 좋은 성능을 보인다. 

▹ 문제 발생 시 커뮤니티를 통해 해결 가능하며 소스 공개로 확장성이 좋다.

컴파일 타임의 매커니즘으로 실행 시 효율 저하가 적다.

STL의 단점

템플릿 기반으로 소스가 비대해질수 있고 예외 처리가 어려워져 디버깅이 힘들어질 수 있다.

가독성이 떨어질 수 있다.

'Game Programming > 게임 프로그래밍 C++' 카테고리의 다른 글

[C++] 데큐와 리스트  (2) 2022.09.18
[C++] 순차 컨테이너와 벡터  (0) 2022.09.16
[C++] 메모리 할당  (0) 2022.09.12
[C++] 형변환과 템플릿  (0) 2022.09.12
[C++] 포인터,상수, 참조  (0) 2022.09.12