C++에 기본으로 포함된 자료구조 + 알고리즘을 모아놓은 라이브러리이다.
STL에 들어 있는 도구는 3종
컨테이너 vector, map, set 등
데이터를 담는 그릇
알고리즘 sort, find, max_element 등
데이터를 정렬하거나 찾는 함수들
이터레이터 begin(), end()
컨테이너 안에서 데이터를 순회하게 해주는 요소
#include <iostream>// 표준 입출력
cin // 입력
cout // 출력
getline(cin, str); // 한 줄 전체 입력
ios::sync_with_stdio(false); // C, C++ 입출력 동기화 해제 (속도 향상)
cin.tie(0); // cin과 cout의 묶음 해제 (속도 향상)
#include <vector> // 동적 배열
v.push_back(x); // 벡터에 원소 추가
v.size(); // 벡터 크기 반환
v.clear(); // 벡터 비우기
vector<vector<int>> v(n, vector<int>(m)); // 2차원 벡터 초기화
#include <tuple>// 튜플
make_tuple(a,b,c); // 튜플 생성
tie(a,b,c) = my_tuple; // 튜플을 변수에 분해
get<0>(my_tuple); // 튜플의 첫 번째 요소 접근
#include <set>// 자동 정렬 + 중복 제거 집합
s.insert(x); // 원소 삽입
s.erase(x); // 원소 삭제
s.count(x); // 원소 존재 여부 (0 또는 1)
auto it = s.find(x); // 원소 찾기 (없으면 s.end() 반환)
#include <map>// key → value 형태의 자료구조
m[key] = value; // 값 삽입 또는 갱신
m.find(key); // 키 위치 찾기 (iterator 반환)
m.count(key); // 키 존재 여부 (0 또는 1)
#include <string>// 문자열
s.length(), s.size(); // 문자열 길이
s.substr(start, len); // 부분 문자열 추출
s.find("abc"); // 부분 문자열 위치 찾기
s.replace(pos, len, "new"); // 문자열 일부 교체
stoi("123"); // 문자열 → 정수 변환
to_string(123); // 정수 → 문자열 변환
#include <algorithm>// 정렬, 최대/최소값 등
sort(v.begin(), v.end()); // 오름차순 정렬
sort(v.begin(), v.end(), greater<int>()); // 내림차순 정렬
reverse(v.begin(), v.end()); // 벡터 뒤집기
max_element(v.begin(), v.end()); // 최대값 위치
min_element(v.begin(), v.end()); // 최소값 위치
next_permutation(v.begin(), v.end()); // 사전순으로 다음 순열로 변경
lower_bound(v.begin(), v.end(), x); // x 이상 처음 위치의 인덱스 번호
upper_bound(v.begin(), v.end(), x); // x 초과 첫 위치의 인덱스 번호
#include <iomanip>I/O Manipulator → 입출력 조작
io : input/outputmanip : manipulator// 출력 포맷 조절
cout << fixed << setprecision(2); // 소수점 아래 2자리까지 고정 출력
#include <functional>// 비교 함수 객체
greater<>() // 내림차순 정렬 or 우선순위 큐에서 사용
#include <cctype>// 문자 처리
toupper(c); // 소문자 → 대문자
tolower(c); // 대문자 → 소문자
isdigit(c); // 숫자인지 확인 (0~9)
#include <queue>// 큐
queue<int> q; q.push(x); // 큐 삽입
q.pop(); // 큐 제거
q.front(); // 큐 맨 앞 원소 반환
priority_queue<int> pq; // 최대 힙 (큰 값이 먼저 나옴)
priority_queue<int, vector<int>, greater<int>> pq; // 최소 힙
#include <cstring>// 메모리 처리
memset(arr, 0, sizeof(arr)); // 배열 0으로 초기화
#include <climits>// 정수형 타입의 최대, 최소 상수들
INT_MAX, INT_MIN; // int 자료형 최대/최소
LONG_MAX, LLONG_MIN; // long/long long 최대/최소
#include <cmath>// 수학 함수
abs(x); // 절댓값
sqrt(x); // 제곱근
#include <utility>// 두 개의 값을 하나로 묶어서 쓸 때
pair<x,y>; // 두 값을 하나로
swap(x,y); // 두 값을 교환
#include <unordered_map>// 해시 기반 맵 (정렬 X, 빠른 접근)
for (auto& [k,v] : umap) // 해시맵 전체 순회 (구조 분해 방식)