Namespaces
Variants

Utility library

From cppreference.net
Utilities 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++20부터)

헤더 파일에 정의됨 <source_location>
파일 이름, 줄 번호, 함수 이름과 같은 소스 코드 정보를 나타내는 클래스
(클래스)

3-way 비교 (C++20부터)

헤더 파일에 정의됨 <compare>
주어진 타입들에 대해 <=> 연산자가 일관된 결과를 생성함을 명시
(concept)
3-way 비교의 결과 타입으로, 모든 6개 연산자를 지원하고, 치환 가능하지 않으며, 비교 불가능한 값을 허용함
(class)
3-way 비교의 결과 타입으로, 모든 6개 연산자를 지원하고 치환 가능하지 않음
(class)
3-way 비교의 결과 타입으로, 모든 6개 연산자를 지원하고 치환 가능함
(class)
명명된 비교 함수들
(function)
x <=> y 를 구현하는 제약된 함수 객체
(class)
주어진 타입들에 대한 3-way 비교 연산자 <=> 의 결과 타입을 얻음
(class template)
주어진 모든 타입들이 변환될 수 있는 가장 강력한 비교 범주
(class template)
3-way 비교를 수행하고 std::strong_ordering 타입의 결과를 생성함
(customization point object)
(C++20)
3-way 비교를 수행하고 std::weak_ordering 타입의 결과를 생성함
(customization point object)
3-way 비교를 수행하고 std::partial_ordering 타입의 결과를 생성함
(customization point object)
3-way 비교를 수행하고 std::strong_ordering 타입의 결과를 생성함, operator <=> 를 사용할 수 없는 경우에도 동작함
(customization point object)
3-way 비교를 수행하고 std::weak_ordering 타입의 결과를 생성함, operator <=> 를 사용할 수 없는 경우에도 동작함
(customization point object)
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++11 이후)

정의된 헤더 <utility>
(C++11)
함수 인자를 전달하며 값 범주를 보존하기 위해 타입 템플릿 인자를 사용함
(함수 템플릿)
지정된 타입 템플릿 인자의 표현식 값 범주와 constness로 캐스팅하는 것처럼 함수 인자를 전달함
(함수 템플릿)
(C++11)
인자를 xvalue로 변환함
(함수 템플릿)
이동 생성자가 예외를 던지지 않을 경우 인자를 xvalue로 변환함
(함수 템플릿)
(C++17)
인자에 대한 const 참조를 얻음
(함수 템플릿)
(C++11)
평가되지 않은 컨텍스트에서 사용하기 위해 템플릿 타입 인자 객체에 대한 참조를 얻음
(함수 템플릿)
열거형을 기반 타입으로 변환함
(함수 템플릿)

정수 비교 함수 (since C++20)

헤더 파일에 정의됨 <utility>
두 정수 값을 비교하며, 부호 있는 음수가 부호 없는 숫자보다 작도록 보장
(함수 템플릿)
(C++20)
정수 값이 주어진 정수 타입의 범위 내에 있는지 확인
(함수 템플릿)

관계 연산자 (C++20까지)

헤더 파일에 정의됨 <utility>
네임스페이스에 정의됨 std::rel_ops
(C++20에서 사용 중단됨)
사용자 정의 operator == operator < 를 기반으로 비교 연산자를 자동 생성
(함수 템플릿)

생성 태그 (since C++11)

헤더 파일에 정의됨 <utility>
조각별 생성 태그
(태그)
인플레이스 생성 태그
(태그)
값 생성 태그
(태그)

페어 튜플

헤더에 정의됨 <utility>
이진 튜플을 구현함, 즉 값의 쌍
(클래스 템플릿)
헤더에 정의됨 <tuple>
(C++11)
고정 크기 컨테이너를 구현함, 서로 다른 타입의 요소들을 보관
(클래스 템플릿)
(C++17)
인수 튜플로 함수를 호출함
(함수 템플릿)
인수 튜플로 객체를 생성함
(함수 템플릿)
Tuple 프로토콜 (C++11부터)
헤더에 정의됨 <tuple>
헤더에 정의됨 <utility>
헤더에 정의됨 <array>
헤더에 정의됨 <ranges>
헤더에 정의됨 <complex>
(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