📌 컨테이너란 ?
같은 타입의 객체를 저장, 관리할 목적으로 만들어진 클래스
- 컨테이너에 저장된 객체는 컨테이너가 소유한다.
- 컨테이너의 수명이 끝나면 객체의 수명도 끝난다. (단, 포인터는 예외)
- 복사 생성자 또는 대입 연산자의 호출이 가능한 타입만 컨테이너에 저장된다.
📌 종류
1. 표준 시퀀스 컨테이너
- 선형적
- 종류 : vector, deque, list
2. 표준 연관 컨테이너
- 비선형적
- 종류 : set, multiset, map, multimap
3. 근사 컨테이너
- 문자만 저장하는 컨테이너 : String
- 내장 배열 컨테이너 : arr, valarray
📌 데이터 저장 방식에 따른 구분
1. 배열 기반 컨테이너
- array-based container
- 데이터 여러개가 하나의 메모리 단위에 저장됨
- 종류 : vector, deque
2. 표준 연관 컨테이너
- node-based container
- 데이터 하나를 하나의 메모리 단위에 저장됨
- 종류 : list, set, multiset, map, multimap
📌 대표적 시퀀스 컨테이너 특징
1. 벡터 (vector)
- #include < vector >
- 배열처럼 동작
- 동적 배열로 힙에 저장
- 단점 : 삽입, 삭제 느림
- 장점 : 배열처럼 임의접근은 빠르다
2. 배열 (array)
- #include < array >
- 크기 고정
- 정적배열로 스택에 저장
- 단점 : 삽입, 삭제 느림
- 장점 : 임의접근은 빠르다
3. 덱 (deque)
- #include < deque >
- 벡터와 유사
- 시작과 끝에서 빠르게 삽입 삭제 가능
- 장점 : 임의 접근 및 유연한 길이
4. 리스트 (list)
- #include < list >
- 이중 연결 리스트 구조
- 단점 : 임의 접근 불가능
- 장점 : 모든 위치에서 양방향 접근 가능, 빠른 삽입 삭제 가능
5. 포워드 리스트 (forward-list)
- #include < forward_lsit >
- 단순 연결 리스트 구조