DAMPER's blog

3. (1) C++ STL (Standard Template Library) 본문

Problem Solving/COALA 튜터링

3. (1) C++ STL (Standard Template Library)

DAMPER 2021. 5. 19. 12:17
728x90

STL(Standard Template Library) 이란?

 

C++ 표준 템플릿 라이브러리로, 자료구조와 알고리즘 등을 템플릿으로 제공하는 라이브러리를 말합니다.

 

STL의 구성요소로는 Container, Iterator, Algorithm, Function Object 등등 다양한 것들이 있지만 

  • 객체를 저장하는 Container (자료구조)
  • 컨테이너의 요소를 가리키는(요소에 접근할 수 있는) Iterator

이 두가지를 중점으로 설명하겠습니다.

 

이 글은 간략하게 자주사용하는 것들 위주로 작성되므로, 더 다양한 정보를 원하는 경우 아래 레퍼런스 사이트를 참고하시기 바랍니다.

https://en.cppreference.com/

 

cppreference.com

Null-terminated strings:    byte  −   multibyte  −   wide

en.cppreference.com

 

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++ 개발을 하는 데 있어 중요한 역할을 합니다.

물론 장점만 존재하는 것이 아닌 단점도 존재하지만, 특성을 잘 이해하고 개발하는데에도 잘 쓸 줄 알아야합니다.

 

 

 

 

 

 

 

728x90