본문 바로가기
프로그래밍/C++

C++ ] STL 과 컨테이너

by eteo 2023. 3. 25.

 

 

C++ 표준 라이브러리

 

C++ 언어에서 사용되는 기본 라이브러리로, C++ 컴파일러에 의해 제공된다. 표준 라이브러리는 std 네임스페이스 안에 있는 여러 클래스와 함수를 포함하, STL은 표준 라이브러리의 일부이다.

 

 

 

 

 

 

 

 

 

STL(Standard Template Library)

 

STL(Standard Template Library)은 C++ 표준 라이브러리의 일부로서, 데이터 구조와 알고리즘을 구현한 템플릿 클래스들의 집합이다. STL은 C++ 개발자들이 높은 수준의 추상화를 이용하여 복잡한 작업을 더 간결하게 표현할 수 있도록 돕는데, 크게 아래와 같은 세 가지 부분으로 구성된다.

 

1. 컨테이너(Container)

  • 데이터 구조를 구현한 클래스의 집합. 이를 통해 개발자들이 데이터를 쉽게 저장하고 관리할 수 있다.
  • vector, list, deque, set, map, stack, queue 등이 있다.

 

2. 반복자(Iterator)

  • 컨테이너의 요소를 순회하기 위한 인터페이스를 제공한다.
  • STL에서 제공하는 알고리즘과 함께 사용되며, 개발자들이 컨테이너 내의 요소에 접근할 수 있게 해준다.

 

3. 알고리즘(Algorithm)

  • 다양한 데이터 처리 작업을 수행하는 함수 템플릿
  • sort, find, count, copy 등이 있습니다.

 

STL은 코드의 재사용성과 효율성을 높여주며, 안정성과 유연성을 제공한다. 또한 STL은 많은 C++ 컴파일러에서 지원하므로, 이식성이 뛰어나며, C++ 개발에서 STL을 이용하는 것은 매우 일반적이다.

 

 

 

 

 

 

 

 

 

 

컨테이너

 

컨테이너는 동일 타입의 데이터를 저장하고 관리하는 클래스들의 집합이다.

 

이 클래스들은 컬렉션이라고도 부르며 동일 타입의 데이터를 저장하고, 추가, 삭제, 검색, 정렬 및 기타 작업을 수행하는 다양한 기능을 제공하는데 크게 아래 세 가지 유형으로 분류된다.

 

 

 

1. 시퀀스 컨테이너(Sequence Containers)

  • 데이터를 선형으로 저장하며, 순서대로 접근 가능한 컨테이너
  • vector, list, deque, array, forward_list 등이 있다.

 

2. 연관 컨테이너(Associative Containers)

  • 데이터를 키-값 쌍으로 저장하며, 키를 기반으로 빠른 검색이 가능한 컨테이너
  • map, multimap, set, multiset 등이 있다.

 

3. 컨테이너 어댑터(Container Adapters)

  • 다른 컨테이너를 기반으로 새로운 인터페이스를 제공하는 컨테이너
  • stack, queue, priority_queue 등이 있다.
  1.