Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 표준 라이브러리 헤더 파일 총정리

```html

C++ 표준 라이브러리는 용도에 따라 여러 종류의 라이브러리로 구성되어 있습니다. 이 글에서는 각 분야별로 분류된 헤더 파일 목록과 핵심 기능을 정리했습니다. C++11, C++17, C++20에서 새로 추가된 헤더도 함께 표시했으니, 프로젝트에 필요한 헤더를 빠르게 찾는 참고 자료로 활용해 보세요.

유틸리티 라이브러리

  • <cstdlib> — 프로그램 제어, 동적 메모리 할당, 난수 생성, 정렬·검색 등 범용 유틸리티
  • <csignal> — 시그널(signal) 관리를 위한 함수 및 매크로 상수 (예: SIGINT)
  • <csetjmp> — 실행 컨텍스트를 저장하고 해당 지점으로 점프하는 매크로 및 함수
  • <cstdarg> — 가변 길이 인자 목록 처리
  • <typeinfo> — 런타임 타입 정보(RTTI) 유틸리티
  • <bitset> — std::bitset 클래스 템플릿
  • <functional> — 함수 객체, 함수 호출, 바인드(bind) 연산, 참조 래퍼
  • <utility> — std::pair 등 다양한 범용 유틸리티 구성 요소
  • <ctime> — C 스타일 날짜 및 시간 유틸리티
  • <cstddef> — size_t, NULL 등 표준 매크로와 typedef
  • <typeindex> (C++11) — type_info 객체의 래퍼로, 연관 컨테이너 및 비정렬(unordered) 연관 컨테이너의 인덱스로 사용 가능
  • <type_traits> (C++11) — 컴파일 타임 타입 정보 조회
  • <chrono> (C++11) — C++ 스타일 시간 유틸리티
  • <initializer_list> (C++11) — const T 타입 객체 배열에 접근할 수 있는 경량 프록시 객체 정의
  • <tuple> (C++11) — 서로 다른 타입의 값들을 담는 고정 크기 컬렉션. std::pair의 일반화
  • <any> (C++17) — 어떤 타입의 단일 값이든 안전하게 보관할 수 있는 타입 안전 컨테이너
  • <optional> (C++17) — 값이 있거나 없을 수 있는 '선택적 값'을 관리하는 클래스 템플릿
  • <variant> (C++17) — 타입 안전 공용체(union). 특정 시점에 후보 타입 중 하나의 값을 보유하며, 오류 발생 시에는 값을 갖지 않음
  • <compare> (C++20) — 삼방 비교 연산자(<=>) 지원

동적 메모리 관리

  • <new> — 저수준 메모리 관리 유틸리티. new 표현식은 동적 저장 기간(dynamic storage duration)을 갖는 객체 또는 객체 배열을 생성하는 유일한 방법입니다.
  • <memory> — 스마트 포인터 등 고수준 메모리 관리 유틸리티
  • <scoped_allocator> (C++11) — 다단계 컨테이너(map의 vector, set의 list 등)에 사용할 수 있는 할당자인 std::scoped_allocator_adaptor 클래스 템플릿
  • <memory_resource> (C++17) — 메모리 리소스를 캡슐화하는 클래스 집합에 대한 추상 인터페이스인 std::pmr::memory_resource

수치 한계(Numeric Limits)

  • <climits> — 정수 타입의 최솟값·최댓값 한계
  • <cfloat> — 부동 소수점 타입의 한계
  • <limits> — 산술 타입의 속성을 조회하는 표준화된 방법
  • <cstdint> (C++11) — int32_t 같은 고정 크기 타입 및 기타 타입의 한계
  • <cinttypes> (C++11) — C 바이트 문자열·와이드 문자열을 std::intmax_t, std::uintmax_t로 변환하는 기능, 일부 수학 함수의 오버로드, <cstdint>에 선언된 타입을 위한 C 스타일 입출력 형식 매크로 제공

오류 처리

  • <exception> — 예외 처리 유틸리티
  • <stdexcept> — std::runtime_error 등 표준 예외 객체
  • <cassert> — 인자가 0인지 비교하는 조건부 컴파일 매크로(assert)
  • <cerrno> — 마지막 오류 번호를 담는 매크로(errno)
  • <system_error> (C++11) — std::error_code는 운영체제나 저수준 인터페이스에서 발생한 오류 코드와, 해당 인터페이스에 대응하는 std::error_category 객체 포인터를 함께 보유하는 플랫폼 의존적 오류 코드입니다.

문자열 라이브러리

  • <cctype> — 문자 데이터의 타입(숫자, 알파벳 등)을 판별하는 함수
  • <cwctype> — 와이드(wide) 문자 데이터의 타입을 판별하는 함수
  • <cstring> — strcpy, strlen 등 좁은(narrow) 문자열 처리 함수
  • <cwchar> — 와이드 문자열 및 멀티바이트 문자열 처리 함수
  • <string> — std::basic_string 클래스 템플릿
  • <cuchar> (C++11) — C 스타일 유니코드 문자 변환 함수
  • <string_view> (C++17) — 첫 번째 요소가 위치 0에 있는 char 계열 객체의 상수 연속 시퀀스를 참조할 수 있는 basic_string_view 클래스 템플릿

컨테이너 라이브러리

  • <array> (C++11) — std::array 컨테이너
  • <vector> — std::vector 컨테이너
  • <deque> — std::deque 컨테이너
  • <list> — std::list 컨테이너
  • <forward_list> (C++11) — std::forward_list 컨테이너
  • <set> — std::set 및 std::multiset 연관 컨테이너
  • <map> — std::map 및 std::multimap 연관 컨테이너
  • <unordered_set> (C++11) — std::unordered_set 및 std::unordered_multiset 비정렬 연관 컨테이너
  • <unordered_map> (C++11) — std::unordered_map 및 std::unordered_multimap 비정렬 연관 컨테이너
  • <stack> — std::stack 컨테이너 어댑터
  • <queue> — std::queue 및 std::priority_queue 컨테이너 어댑터

알고리즘 라이브러리

  • <algorithm> — 컨테이너에 대해 동작하는 정렬, 검색 등 다양한 알고리즘
  • <execution> (C++17) — 알고리즘의 병렬 실행 버전을 위한 사전 정의된 실행 정책(execution policy)

반복자 라이브러리

  • <iterator> — 컨테이너를 순회하기 위한 반복자(iterator)

수치 라이브러리

  • <cmath> — sqrt, pow 등 일반 수학 함수
  • <complex> — 복소수 타입
  • <valarray> — 값 배열을 나타내고 조작하기 위한 클래스
  • <random> (C++11) — 난수 생성기 및 확률 분포
  • <numeric> — 컨테이너 내 값들에 대한 누적합 등 수치 연산
  • <ratio> (C++11) — 컴파일 타임 유리수(rational number) 산술
  • <cfenv> (C++11) — 부동 소수점 환경 접근 함수

입출력 라이브러리

  • <iosfwd> — 입출력 라이브러리의 모든 클래스에 대한 전방 선언(forward declaration)
  • <ios> — std::ios_base 클래스, std::basic_ios 클래스 템플릿 및 여러 typedef
  • <istream> — std::basic_istream 클래스 템플릿 및 여러 typedef
  • <ostream> — std::basic_ostream, std::basic_iostream 클래스 템플릿 및 여러 typedef
  • <iostream> — std::cin, std::cout 등 표준 스트림 객체
  • <fstream> — std::basic_fstream, std::basic_ifstream, std::basic_ofstream 클래스 템플릿 및 여러 typedef
  • <sstream> — std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream 클래스 템플릿 및 여러 typedef
  • <syncstream> (C++20) — std::basic_osyncstream, std::basic_syncbuf 및 typedef
  • <strstream> (사용 중단 권장) — std::strstream, std::istrstream, std::ostrstream
  • <iomanip> — 입출력 형식을 제어하는 도우미 함수
  • <streambuf> — std::basic_streambuf 클래스 템플릿
  • <cstdio> — printf, scanf 등 C 스타일 입출력 함수

지역화(Localization) 라이브러리

  • <locale> — 지역화 유틸리티
  • <clocale> — C 스타일 지역화 유틸리티
  • <codecvt> (C++11 추가, C++17에서 사용 중단 권장) — 유니코드 변환 기능

정규 표현식 라이브러리

  • <regex> (C++11) — 정규 표현식 처리를 지원하는 클래스, 알고리즘 및 반복자

원자적 연산(Atomic Operations) 라이브러리

  • <atomic> (C++11) — 원자적(atomic) 연산 라이브러리

스레드 지원 라이브러리

  • <thread> (C++11) — std::thread 클래스 및 지원 함수
  • <mutex> (C++11) — 상호 배제(mutual exclusion) 프리미티브
  • <shared_mutex> (C++14) — 공유 상호 배제 프리미티브
  • <future> (C++11) — 비동기(async) 계산을 위한 프리미티브
  • <condition_variable> (C++11) — 스레드 대기 조건

파일시스템 라이브러리

  • <filesystem> (C++17) — std::path 클래스 및 경로 조작 지원 함수