컨테이너
같은 타입을 저장, 관리할 목적으로 만들어진 클래스로 2가지로 나눕니다.
표준 시퀀스 컨테이너
컨테이너 원소가 자신만의 삽입 위치(순서)를 가지는 컨테이너
vector, deque, list: 선형적
표준 연관 컨테이너
저장 원소가 삽입 순서와 다르게 특정 정렬 기준에 의해 자동 정렬되는 컨테이너
set, multiset, map, multimap: 비선형적
시퀀스 컨테이너는 삽입되는 순서에 따라 원소의 위치가 결정되고 바뀌지 않음!
연관 컨테이너는 삽입 순서와 상관없이 정렬 기준에 따라 원소의 위치가 결정됨!
또한 컨테이너는 데이터를 하나의 연속한 메모리 단위로 저장하느냐에 따라 두가지로 나뉩니다.
배열 기반 컨테이너
데이터 여러개가 하나의 메모리 단위에 저장됨. vector, deque
노드 기반 컨테이너
데이터 하나를 하나의 메모리 단위에 저장 list, set, multiset, map, multimap
이런 컨테이너 구조는 성능과 메모리 사용 등에서 큰 차이를 보이므로 어떤 컨테이너를 활용하느냐에 따라 프로그램의 성능과 메모리 차이가 날 수 있으니 알아두셔야 합니다.
대표적인 컨테이너로는 vector 가 있습니다.
vector는 시퀀스 컨테이너이며 배열 기반 컨테이너 입니다.
시퀀스 컨테이너는 컨테이너 끝에 원소를 삽입 제거하기 위한 push_back()과 pop_back()함수를 가집니다.
또한 배열 기반 컨테이너는 operator[ ] 연산자를 가져 일반 배열처럼 원소에 접근할 수 있습니다.
모든 컨테이너는 원소의 개수를 반환하는 size( )함수를 가집니다.
vector 예제 코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
return 0;
}
결과
10 20 30 40 50
vector는 시퀀스 컨테이너 이므로 순서대로 출력됩니다.
배열 기반 컨테이너로 [ ] 연산자로 접근해서 출력할 수 있음을 확인했습니다.
'C++ > STL' 카테고리의 다른 글
[STL] 알고리즘 Algorithm (0) | 2025.03.03 |
---|---|
[STL] 반복자 Iterator (0) | 2025.03.03 |
[STL] STL 시작 (1) | 2025.03.01 |
[STL] 4장 문제풀이 (0) | 2025.02.21 |
[STL] 함수 템플릿 (0) | 2025.02.21 |