C++ - Module 08

이호용·2021년 12월 7일
0

cpp

목록 보기
9/16

자 이제 module 08까지 왔다.

cpp module을 지금까지 공부했다면, stl이 뭔지는 정확히 알고 가야한다고 생각한다.

나는 module00에서 stl을 한번 봤었지만 중요한 내용인 만큼, 이번 08장에서 다시 한번 stl을 보도록하자.

STL

STL이란?

  • 표준 C++ 라이브러리 (Standard Template Library)
  • 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리

이제야 Template라는 단어가 완전 이해된다. stl은 사용하기 편하게 템플릿 형태로 자료구조와 알고리즘을 제공해주는 것!

STL 구성요소

구성요소설명
컨테이너(containor)객체를 저장하는 객체로 컬렉션 or 자료구조(vector, list 등등)라 부른다. (클래스 템플릿으로 구현)
반복자(iterator)포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 다음 원소 또한 가리키게함.
알고리즘(Algorithm)정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿
함수객체함수처럼 동작하는 객체로 opeartor() 연산자를 오버로딩한 객체다.
어댑터구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경함. ex) stack, queue, priority_queue
할당기컨테이너의 메모리 할당 정책을 캡슐화한 클래스 겍체, 모든 컨테이너는 자신만의 기본 할당기를 갖는다.

STL 구성요소 :: 컨테이너

Standard Containers

컨테이너란?

  • 같은 타입의 객체를 저장, 관리할 목적으로 만들어진 클래스 템플릿.

  • STL 컨테이너는 템플릿으로 만들어져 있기 때문에 기본적인 조건만 맞으면 어떤 데이터 타입이든 수용 가능하다.

  • 컨테이너는 요소의 저장 공간을 관리하고 직접 또는 반복자를 통해 액세스할 수 있는 멤버 함수를 제공합니다

stl에서 컨테이너는 5개의 카데고리로 나뉘어진다.

종류

컨테이너의 종류를 나누는 방법은 크게 두가지가 있다.
선형 또는 비선형, 데이터 저장 방식에 따른 구분,

선형 또는 비선형

  1. 표준 시퀀스 컨테이너(Sequence container)
    • 선형적 : 컨테이너 원소가 자신만의 삽입 위치(순서)를 가진다.
    • 종류 : vector, deque, list
  2. 표준 연관 컨테이너 (Associative container)
    • 비선형적 : 저장 원소가 삽입 순서와 다르게 자동으로 정렬된다.
    • 종류 : set, multiset, map, multimap
  3. 근사 컨테이너 (almost container)
    • 문자만 저장하는 컨테이너 : String
    • 내장 배열 컨테이너 : arr, valarray

데이터 저장 방식에 따른 구분

  1. 배열 기반 컨테이너
    array-based container
    데이터 여러개가 하나의 메모리 단위에 저장됨
    종류 : vector, deque
  2. 표준 연관 컨테이너
    node-based container
    데이터 하나를 하나의 메모리 단위에 저장됨
    종류 : list, set, multiset, map, multimap

0개의 댓글