공부/C || C++

STL Container (시퀀스 컨테이너, 연관 컨테이너, 컨테이너 어댑터)

sudo 2022. 9. 17. 14:15

C++ 표준 라이브러리에는 많은 종류의 라이브러리가 존재한다. 예를 들어 입출력 라이브러리(iostream 등), 시간 관련 라이브러리(chrono) 등이 있다. 특히 C++ 템플릿 라이브러리(Standard Template Library)는 다음 세 개의 라이브러리들을 의미한다

  • 임의 타입의 객체를 보관할 수 있는 컨테이너 라이브러리(container)
  • 컨테이너에 보관된 원소에 접근할 수 있는 반복자(iterator)
  • 반복자들을 가지고 일련의 작업을 수행하는 알고리즘

위에서 볼 수 있듯이, 컨테이너에 임의 타입의 객체를 보관할 수 있다고 한다. 임의 타입의 객체를 보관할 수 있는 이유는 템플릿으로 구현되어 있기 때문이다. 따라서 int, string 같은 기본적인 자료형이 아닌, 사용자가 직접 만든 클래스 객체들도 컨테이너들이 보관할 수 있다는 의미이다.

  특징 예시
Sequence Container 정렬되지 않고, 원래 순서 그대로 유지 vector, deque, list
Associative Container 졍렬된 컨테이너(단 unordered 부류의 자료 구조는 정렬되지 않음) set, multiset, unordered_set, map, multimap,
unordered_map
Container Adapter 기존 Container의 인터페이스를 제한하거나 변형해서 만든 컨테이너. 반복자를 지원하지 않으므로 STL 알고리즘에서 사용할 수 없음.
예를 들어, stack은 vector의 인터페이스를 제한해서 LOFO 시멘틱을 따르도록 만듬.
stack, queue, priority queue

 

Reference

https://modoocode.com/223

 

씹어먹는 C++ - <10 - 1. C++ STL - 벡터(std::vector), 리스트(list), 데크(deque)>

 

modoocode.com

http://www.tcpschool.com/cpp/cpp_container_adapter

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com