C++의 STL(Standard Template Library)에서 제공하는 컨테이너들은 데이터를 효율적으로 저장하고 관리할 수 있도록 도와줍니다. vector, list, deque는 모두 시퀀스 컨테이너로, 저장된 데이터의 순서를 유지하며 각기 다른 상황에서 효율성을 제공합니다.
1. vector (동적 배열)
- 특징: 크기를 자동으로 조절하는 동적 배열입니다. 요소를 뒤에서 삽입하거나 삭제하는 작업은 빠르지만, 중간에 삽입하거나 삭제하는 작업은 느림
- 사용 예: 배열처럼 사용하되 크기가 변경될 수 있는 경우에 적합

#include <iostream>
#include <vector>
int main() {
std::vector<int> v = {1, 2, 3}; // 초기화
v.push_back(4); // 끝에 4 추가
v.push_back(5);
for (int i : v) {
std::cout << i << " "; // 출력: 1 2 3 4 5
}
std::cout << "\n";
v.pop_back(); // 마지막 요소 삭제
std::cout << "Size: " << v.size() << "\n"; // 출력: Size: 4
return 0;
}
2. list (연결 리스트)
- 특징: 양방향 연결 리스트입니다. 중간에 삽입 및 삭제가 빠르지만, 인덱스로 접근하는 것은 느립니다.
- 사용 예: 중간에서 빈번한 삽입 및 삭제가 필요한 경우에 적합합니다.

3. deque (양방향 큐)
- 특징: 덱(deque)은 앞뒤 양쪽에서 삽입과 삭제가 모두 가능한 컨테이너입니다. vector와 유사하지만 양 끝에서 모두 빠른 작업이 가능합니다.
- 사용 예: 양쪽에서 빈번하게 데이터를 삽입하고 삭제해야 하는 경우에 적합합니다.


Associative container
1. map (맵)
map은 키와 값의 쌍을 저장하며, 각 키는 고유합니다. std::map은 자동으로 키를 기준으로 정렬하며, 기본적으로 오름차순 정렬을 사용합니다.


2. set (셋)
set은 고유한 값들을 저장하고, 삽입된 값은 자동으로 정렬됩니다. 기본적으로 오름차순 정렬되며, 중복된 값은 저장되지 않습니다.

map과 set은 이진 탐색 트리 기반이므로, 탐색과 정렬이 O(log n) 복잡도를 가집니다. 키나 값이 자동으로 정렬되기 때문에 별도의 정렬 알고리즘을 적용할 필요가 없다.
구체적인 건 자료구조에서 이어서 진행해야겠다.