Utility library
C++는 비트 카운팅 부터 부분 함수 적용 까지 다양한 기능을 제공하는 유틸리티 라이브러리들을 포함합니다. 이러한 라이브러리는 크게 두 그룹으로 나눌 수 있습니다:
- 언어 지원 라이브러리, 및
- 범용 라이브러리.
목차 |
언어 지원
언어 지원 라이브러리는 언어 기능과 밀접하게 상호작용하고 일반적인 언어 관용구를 지원하는 클래스와 함수를 제공합니다.
구현 속성 (C++20부터)
헤더 <version> 는 C++ 표준 라이브러리에 대한 구현 종속 정보(버전 번호 및 릴리스 날짜 등)를 제공합니다. 또한 라이브러리 기능 테스트 매크로 를 정의합니다.
타입 지원
기본 타입 (예: std::size_t , std::nullptr_t ), RTTI (예: std::type_info )
프로그램 유틸리티
종료 (예: std::abort , std::atexit ), 환경 (예: std::system ), 시그널 (예: std::raise ).
동적 메모리 관리
스마트 포인터 (예: std::shared_ptr ), 할당자 (예: std::allocator 또는 std::pmr::memory_resource ), C-스타일 메모리 관리 (예: std::malloc ).
오류 처리
예외 (예: std::exception , std::terminate ), 어서션 (예: assert ).
가변 인수 함수
임의의 개수의 매개변수를 받는 함수 지원 (예: va_start , va_arg , va_end 를 통해).
이니셜라이저 리스트 (C++11부터)
|
헤더 파일에 정의됨
<initializer_list>
|
|
|
(C++11)
|
목록 초기화
과정에서 생성된 임시 배열을 참조함
(클래스 템플릿) |
소스 코드 정보 캡처 (C++20부터)
|
헤더 파일에 정의됨
<source_location>
|
|
|
(C++20)
|
파일 이름, 줄 번호, 함수 이름과 같은 소스 코드 정보를 나타내는 클래스
(클래스) |
3-way 비교 (C++20부터)
|
헤더 파일에 정의됨
<compare>
|
|
|
주어진 타입들에 대해
<=>
연산자가 일관된 결과를 생성함을 명시
(concept) |
|
|
(C++20)
|
3-way 비교의 결과 타입으로, 모든 6개 연산자를 지원하고, 치환 가능하지 않으며, 비교 불가능한 값을 허용함
(class) |
|
(C++20)
|
3-way 비교의 결과 타입으로, 모든 6개 연산자를 지원하고 치환 가능하지 않음
(class) |
|
(C++20)
|
3-way 비교의 결과 타입으로, 모든 6개 연산자를 지원하고 치환 가능함
(class) |
|
명명된 비교 함수들
(function) |
|
|
(C++20)
|
x
<=>
y
를 구현하는 제약된 함수 객체
(class) |
|
(C++20)
|
주어진 타입들에 대한 3-way 비교 연산자
<=>
의 결과 타입을 얻음
(class template) |
|
(C++20)
|
주어진 모든 타입들이 변환될 수 있는 가장 강력한 비교 범주
(class template) |
|
(C++20)
|
3-way 비교를 수행하고
std::strong_ordering
타입의 결과를 생성함
(customization point object) |
|
(C++20)
|
3-way 비교를 수행하고
std::weak_ordering
타입의 결과를 생성함
(customization point object) |
|
(C++20)
|
3-way 비교를 수행하고
std::partial_ordering
타입의 결과를 생성함
(customization point object) |
|
(C++20)
|
3-way 비교를 수행하고
std::strong_ordering
타입의 결과를 생성함,
operator
<=>
를 사용할 수 없는 경우에도 동작함
(customization point object) |
|
(C++20)
|
3-way 비교를 수행하고
std::weak_ordering
타입의 결과를 생성함,
operator
<=>
를 사용할 수 없는 경우에도 동작함
(customization point object) |
|
(C++20)
|
3-way 비교를 수행하고
std::partial_ordering
타입의 결과를 생성함,
operator
<=>
를 사용할 수 없는 경우에도 동작함
(customization point object) |
코루틴 지원 (C++20부터)
코루틴 지원을 위한 타입들 (예: std::coroutine_traits , std::coroutine_handle ).
계약 지원 (C++26 이후)
계약 지원을 위한 타입들 (예: std::contracts::contract_violation ).
범용 유틸리티
스왑
|
정의된 헤더
<utility>
|
|
|
두 객체의 값을 교환
(함수 템플릿) |
|
|
(C++14)
|
인자를 새로운 값으로 교체하고 이전 값을 반환
(함수 템플릿) |
|
정의된 헤더
<concepts>
|
|
|
(C++20)
|
두 객체의 값을 교환
(커스터마이제이션 포인트 객체) |
타입 연산 (C++11 이후)
|
정의된 헤더
<utility>
|
|
|
(C++11)
|
함수 인자를 전달하며 값 범주를 보존하기 위해 타입 템플릿 인자를 사용함
(함수 템플릿) |
|
(C++23)
|
지정된 타입 템플릿 인자의 표현식 값 범주와 constness로 캐스팅하는 것처럼 함수 인자를 전달함
(함수 템플릿) |
|
(C++11)
|
인자를 xvalue로 변환함
(함수 템플릿) |
|
(C++11)
|
이동 생성자가 예외를 던지지 않을 경우 인자를 xvalue로 변환함
(함수 템플릿) |
|
(C++17)
|
인자에 대한
const
참조를 얻음
(함수 템플릿) |
|
(C++11)
|
평가되지 않은 컨텍스트에서 사용하기 위해 템플릿 타입 인자 객체에 대한 참조를 얻음
(함수 템플릿) |
|
(C++23)
|
열거형을 기반 타입으로 변환함
(함수 템플릿) |
정수 비교 함수 (since C++20)
|
헤더 파일에 정의됨
<utility>
|
|
|
두 정수 값을 비교하며, 부호 있는 음수가 부호 없는 숫자보다 작도록 보장
(함수 템플릿) |
|
|
(C++20)
|
정수 값이 주어진 정수 타입의 범위 내에 있는지 확인
(함수 템플릿) |
관계 연산자 (C++20까지)
|
헤더 파일에 정의됨
<utility>
|
|
|
네임스페이스에 정의됨
std::rel_ops
|
|
|
(C++20에서 사용 중단됨)
|
사용자 정의
operator
==
와
operator
<
를 기반으로 비교 연산자를 자동 생성
(함수 템플릿) |
생성 태그 (since C++11)
|
헤더 파일에 정의됨
<utility>
|
|
|
조각별 생성 태그
(태그) |
|
|
인플레이스 생성 태그
(태그) |
|
|
(C++26)
|
값 생성 태그
(태그) |
페어 와 튜플
|
헤더에 정의됨
<utility>
|
|
|
이진 튜플을 구현함, 즉 값의 쌍
(클래스 템플릿) |
|
|
헤더에 정의됨
<tuple>
|
|
|
(C++11)
|
고정 크기 컨테이너를 구현함, 서로 다른 타입의 요소들을 보관
(클래스 템플릿) |
|
(C++17)
|
인수 튜플로 함수를 호출함
(함수 템플릿) |
|
(C++17)
|
인수 튜플로 객체를 생성함
(함수 템플릿) |
Tuple 프로토콜 (C++11부터) |
|
|
헤더에 정의됨
<tuple>
|
|
|
헤더에 정의됨
<utility>
|
|
|
헤더에 정의됨
<array>
|
|
|
헤더에 정의됨
<ranges>
|
|
|
헤더에 정의됨
<complex>
|
|
|
(C++11)
|
튜플과 유사한 타입의 요소 개수를 얻음
(클래스 템플릿) |
|
(C++11)
|
튜플과 유사한 타입의 요소 타입들을 얻음
(클래스 템플릿) |
합 타입과 타입 지워진 래퍼 (since C++17)
|
헤더에 정의됨
<optional>
|
|
|
(C++17)
|
객체를 보유할 수도 있고 보유하지 않을 수도 있는 래퍼
(클래스 템플릿) |
|
헤더에 정의됨
<expected>
|
|
|
(C++23)
|
기대값 또는 오류 값을 포함하는 래퍼
(클래스 템플릿) |
|
헤더에 정의됨
<variant>
|
|
|
(C++17)
|
타입 안전 판별 유니온
(클래스 템플릿) |
|
헤더에 정의됨
<any>
|
|
|
(C++17)
|
CopyConstructible
타입의 인스턴스를 보유하는 객체
(클래스) |
비트셋
|
헤더 파일에 정의됨
<bitset>
|
|
|
고정 길이 비트 배열 구현
(클래스 템플릿) |
|
비트 조작 (C++20 이후)
<bit> 헤더는 개별 비트와 비트 시퀀스를 접근, 조작 및 처리하기 위한 여러 함수 템플릿을 제공합니다. 스칼라 타입의 바이트 순서( endianness )는 std:: endian 기능을 통해 확인할 수 있습니다.
함수 객체 (since C++11)
부분 함수 적용(예: std::bind ) 및 관련 유틸리티: 바인딩을 위한 유틸리티들( std::ref 와 std::placeholders ), 다형성 함수 래퍼: std::function , 미리 정의된 함수 객체들(예: std::plus , std::equal_to ), 멤버 함수 포인터 변환기 std::mem_fn .
해시 지원 (C++11 이후)
|
헤더 파일에 정의됨
<functional>
|
|
|
(C++11)
|
해시 함수 객체
(클래스 템플릿) |
참고 항목
|
C 문서
참조:
Utility library
|