Engineering Note

[C++] STL(Standard Template Library) 본문

Programming Language/C++

[C++] STL(Standard Template Library)

Software Engineer Kim 2021. 2. 22. 21:06

STL(Standard Template Library)

  • Container와 Algorith을 일반화한 자료구조 라이브러리로서 일반화된 라이브러리(generic library)의 사용을 위해서 Template을 제공한다.
  • STL의 핵심구성요소는 Container, Algorithm, iterator
  • STL은 정수, 실수 등의 기본형은 물론이고 사용자 정의형 등 어떤 자료형의 데이터에 대해서도 사용할 수 있는 자료구조를 제공해 주며 또한 자료구조의 형태나 내부 구조에 상관 없이 어떤 데이터 집합에도 적용해서 사용할 수 있는 일반화된 알고리즘을 제공한다.

Program의 구성요소 및 STL의 필요성

  • Program은 Container(자료구조)와 Algorithm(알고리즘)으로 구성된다.
  • 좋은 프로그램을 작성하려면 상황에 다라 자료구조를 잘 선택해야 함
  • 삽입, 삭제 추가, 검색, 정렬, 뒤집기, 병합, 추출, 누적 합계 등의 다양한 알고리즘을 사용해야만 하는데 STL이 이 프로그램을 개발하는 데 없어서는 안 되는 자료구조와 알고리즘 중 자주 사용되는 것들을 일반화해서 제공하는 라이브러리이다.

Container(컨테이너)

  • 처리하고자 하는 데이터를 표현하는 방법
  • 객체들을 담아둘 수 있는 개체를 말한다.
  • ex) 배열과 유사한 vector를 들 수 있다.

Iterator(반복자)

  • 컨테이너와 알고리즘 사이에서 이를 연결해 주는 역할을 한다.
  • 반복자는 컴테이너가 관리하는 요소에 접근할 수 있게 해 주는 추상호된 개념
  • 프로그램을 하는 데 있어 반복적인 작업에 이름을 붙여서 프로그래머가 반복적인 작업을 할 때 사용하는 패턴 중 하나
  • 반복자를 통해 컨테이너 내의 요소들을 다양한 방법으로 다룰 수 있기 때문에 알고리즘과 컨테이너를 연결하는 매체가 되고, 컨테이너에 알고리즘을 적용하려면 반복자가 꼭 필요하다.

Algorithm

  • 자료들을 가공하고 적적히 사용할 수 있는 방법을 말한다.
  • ex) 컨테이너를 정렬하기 위한 Sort
  • STL에서는 알고리즘을 컨테이너에서 완전히 분리시켜 컨테이너 종류와는 무관하게 어떤 컨테이너에도 적용할 수 있도록 이식석을 높엿다.

'Programming Language > C++' 카테고리의 다른 글

[C++] C++ 공부할 것  (0) 2021.05.28
[C++] VC C++ 컴파일 환경설정  (0) 2021.05.13
[C++] 객체와 클래스  (0) 2021.05.06
Comments