STL 소개

Park Sejin·2021년 3월 13일
0

SoEn STL 정리

목록 보기
1/2

1. 일반화 프로그래밍


프로그램은 자료구조와 알고리즘으로 구성

- 자료구조는 처리하고자 하는 데이터를 표현하는 방법

- 알고리즘은 이 자료들을 가공하여 유용한 정보를 생산하는 기법

- 좋은 프로그램을 만들기 위해서는 자료구조와 알고리즘 모두 필요




프로그램의 상황에 따라 사용하는 자료구조가 달라진다.

- 각 자료구조마다 고유한 특징과 장단점이 있음

- 모든 형태의 데이터에 적합한 이상적인 자료구조는 존재하지 않음

- 상황에 따라 가장 효율적인 자료구조를 선택해야 함




자료구조를 조작하는 알고리즘은 매우 많다.

- 삽입, 삭제, 추가, 검색, 정렬, 뒤집기, 병합, 추출, 누적 합계 등의 일반적인 알고리즘

- 각 자료구조에만 사용할 수 있는 독특한 알고리즘도 존재




코드를 재사용하기 위한 노력

- 한 번 만든 자료구조나 알고리즘을 수정없이 재사용하기 위해 여러가지 시도가 있었음

- 그중에 객체 지향 프로그래밍(OOP)은 재사용성에 있어서 탁월한 성능을 보여줌

- 객체 지향 프로그래밍 이후 일반화 프로그래밍 기법은 좀 더 발전된 개념의 재사용성을 제공함




일반화(Generic)은 두 가지 측면에서 일반성을 제공

- 임의 타입에 사용할 수 있는 자료구조를 만들 수 있음

- 자료구조의 일반성을 구현하기 위해 인수로 전달된 타입으로 클래스를 정의하는 C++의 템플릿 문법이 사용

- 자료구조의 형태나 내부 구조에 상관없이 임의의 데이터 집합에 적용할 수 있는 일반화된 알고리즘을 제공

- 자료구조에 상관없이 사용방법이 동일하므로 어떠한 형태의 데이터에 대해서도 적용 가능



STL은 일반화의 개념에 의해 자주 사용되는 자료구조와 알고리즘을 제공

- Standard Template Library의 약자

- 템플릿의 집합을 제공하는 라이브러리이며 현재 C++의 표준으로 채택

- C언어가 printf, strcpy, atoi 등 함수 수준의 라이브러리를 제공하는데 비해 C++은 템플릿 수준의 더 범용적인 라이브러리를 제공함





2. STL의 특징


STL의 특징

1. 하나의 단일 알고리즘으로 복수 개의 컨테이너에 동일한 작업을 똑같은 방법으로 수행할 수 있음

2. 컴파일 타임 메커니즘을 사용하기 때문에 실행 시의 효율 저하가 거의 없음

3. 객체 지향적이지 않음. 알고리즘 함수들은 대부분 전역 함수이며 멤버 함수로 제공되는 경우는 상대적으로 드뭄.

4. 표준이므로 이식성이 확보됨. STL로 작성한 코드는 표준을 준수하는 어떠한 컴파일러로도 문제없이 컴파일할 수 있음.

5. 확장 가능함. 소스가 공개되어 있으므로 STL 라이브러리를 분석하여 원하는 컨테이너와 알고리즘을 직접 작성하여 사용할 수 있음




STL의 단점

1. 템플릿에 기반하기 때문에 타입마다 함수와 클래스가 매번 구체화되어 코드가 비대해지는 고질적인 문제가 있음.

- 완전이 똑같은 컨테이너라도 타입이 바뀌면 두 벌의 거대한 코드 집합이 따로 생성됨.
- 약간의 속도 향상을 위해 크기를 완전히 포기한 셈.

2. STL로 작성한 코드는 가독성이 심하게 떨어짐

- 템플릿 클래스의 타입명이 길어 의미를 빠르게 파악하기 어려움.
- 에러 메세지 의미를 해석하기 어려움.

3. STL을 배우는 비용이 큼




출처 : SoEn:소프트웨어 공학 연구소

0개의 댓글