<functional>
함수 개체(functors라고도 함) 및 해당 바인더를 생성하는 데 도움이 되는 C++ 표준 라이브러리 함수를 정의합니다. 함수 개체는 operator()
를 정의하는 형식의 개체입니다. 함수 개체는 함수 포인터일 수 있지만, 개체를 사용하여 함수 호출 중에 액세스할 수 있는 추가 정보를 저장하는 것이 더 일반적입니다.
요구 사항
헤더:<기능>
네임스페이스: std
설명
알고리즘에는 단항 및 이진 함수 개체의 두 가지 형식이 필요합니다. 단항 함수 개체에는 인수가 하나 필요하고 이항 함수 개체에는 인수가 두 개 필요합니다. 함수 개체 및 함수 포인터는 알고리즘 조건자로 전달할 수 있지만 함수 개체는 조정 가능하며 C++ 표준 라이브러리의 범위, 유연성 및 효율성을 높입니다. 예를 들어 값이 알고리즘에 전달되기 전에 함수에 바인딩되어야 하는 경우 함수 포인터를 사용할 수 없습니다. 함수 어댑터는 함수 포인터를 값에 바인딩될 수 있는 조정 가능한 함수 개체로 변환합니다. 헤더 <함수> 에는 멤버 함수를 적응 가능한 함수 개체로 호출할 수 있는 멤버 함수 어댑터도 포함되어 있습니다. 함수는 해당 인수 및 반환 형식을 지정하는 중첩 형식 선언을 포함하는 경우 조정 가능합니다. 함수 개체와 해당 어댑터는 C++ 표준 라이브러리가 기존 애플리케이션을 업그레이드할 수 있도록 하며 라이브러리를 C++ 프로그래밍 환경으로 통합하는 데 도움이 됩니다.
함수>에서 함수 개체의 구현에는 표준 함수 개체<의 특수화이며 템플릿 매개 변수를 사용하지 않고 함수 인수의 완벽한 전달과 결과의 완벽한 반환을 수행하는 투명한 연산자 functor가 포함됩니다. 이러한 템플릿 특수화는 산술, 비교, 논리 및 비트 연산자 함수를 호출할 때 인수 형식을 지정할 필요가 없습니다. 사용자 고유의 형식 또는 다른 유형의 형식 조합에 대해 산술, 비교, 논리 또는 비트 연산자를 오버로드할 수 있으며 투명 연산자 함수를 함수 인수로 사용할 수 있습니다. 예를 들어 MyType 형식이 operator<
를 구현하는 경우 sort(my_collection.begin(), my_collection.end(), less<MyType>())
형식을 명시적으로 지정하는 대신 sort(my_collection.begin(), my_collection.end(), less<>())
를 호출할 수 있습니다.
다음 기능은 C++11, C++14 및 C++17에 추가됩니다.
호출 시그니처는 반환 형식의 이름 및 0개 이상 인수 형식의 괄호로 묶인 쉼표로 구분된 목록입니다.
호출 가능 형식은 함수에 대한 포인터, 멤버 함수에 대한 포인터, 멤버 데이터에 대한 포인터 또는 개체가 함수 호출 연산자 바로 왼쪽에 표시될 수 있는 클래스 형식입니다.
호출 가능 개체는 호출 가능 형식의 개체입니다.
호출 래퍼 형식은 호출 가능 개체를 보유하고 해당 개체에 전달하는 호출 작업을 지원하는 형식입니다.
호출 래퍼는 호출 래퍼 형식의 개체입니다.
대상 개체는 호출 래퍼 개체가 보유한 호출 가능 개체입니다.
의사(pseudo) 함수 INVOKE(f, t1, t2, ..., tN)
은 다음 중 하나를 의미합니다.
f
가T
클래스의 멤버 함수에 대한 포인터이고,t1
이T
형식의 개체이거나T
형식의 개체에 대한 참조 또는T
에서 파생된 형식의 개체에 대한 참조인 경우(t1.*f)(t2, ..., tN)
입니다.f
가T
클래스의 멤버 함수에 대한 포인터이고t1
이 이전 항목에서 설명한 형식 중 하나가 아닌 경우((*t1).*f)(t2, ..., tN)
입니다.N == 1이며
f
가T
클래스의 멤버 데이터에 대한 포인터이고,t1
이T
형식의 개체이거나T
형식의 개체에 대한 참조 또는T
에서 파생된 형식의 개체에 대한 참조인 경우t1.*f
입니다.N == 1이며
f
가T
클래스의 멤버 데이터에 대한 포인터이고t1
이 이전 항목에서 설명한 형식 중 하나가 아닌 경우(*t1).*f
입니다.다른 모든 경우에서는
f(t1, t2, ..., tN)
입니다.
의사(pseudo) 함수 INVOKE(f, t1, t2, ..., tN, R)
은 INVOKE(f, t1, t2, ..., tN)
이 R
로 암시적으로 변환되었음을 의미합니다.
호출 래퍼에 약한 결과 형식이 있는 경우 해당 멤버 형식 result_type
의 형식은 다음과 같이 래퍼 대상 개체의 T
형식을 기반으로 합니다.
T
가 함수에 대한 포인터인 경우result_type
은T
의 반환 형식에 대한 동의어입니다.T
가 멤버 함수에 대한 포인터인 경우result_type
은T
의 반환 형식에 대한 동의어입니다.T
가 멤버 형식result_type
을 포함하는 클래스 형식인 경우result_type
은T::result_type
에 대한 동의어입니다.그렇지 않은 경우 멤버
result_type
이 없습니다.
각 호출 래퍼에 이동 생성자 및 복사 생성자가 있습니다. 단순 호출 래퍼는 대입 연산자가 있고 해당 복사 생성자, 이동 생성자 및 대입 연산자에서 예외가 발생하지 않는 호출 래퍼입니다. 전달 호출 래퍼는 임의의 인수 목록을 사용하여 호출할 수 있고 래핑된 호출 가능 개체에 인수를 참조로 전달하는 호출 래퍼입니다. 모든 rvalue 인수는 rvalue 참조로 전달되고 lvalue 인수는 lvalue 참조로 전달됩니다.
멤버
클래스
이름 | 설명 |
---|---|
bad_function_call | 개체가 비어 있어서 function 개체에 대한 operator() 호출이 실패했음을 나타내기 위해 발생한 예외를 설명하는 클래스입니다. |
binary_negate | 지정된 이진 함수의 반환 값을 부정하는 멤버 함수를 제공하는 클래스 템플릿입니다. (C++17에서는 사용되지 않습니다.) |
binder1st | 이진 함수의 첫 번째 인수를 지정된 값에 바인딩하여 이진 함수 개체를 단항 함수 개체로 변환하는 생성자를 제공하는 클래스 템플릿입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
binder2nd | 이진 함수의 두 번째 인수를 지정된 값에 바인딩하여 이진 함수 개체를 단항 함수 개체로 변환하는 생성자를 제공하는 클래스 템플릿입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
boyer_moore_horspool_searcher | |
boyer_moore_searcher | |
const_mem_fun_ref_t | 참조 인수를 사용하여 초기화할 때 인수를 사용하지 않는 const 멤버 함수를 단항 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
const_mem_fun_t | 포인터 인수를 사용하여 초기화할 때 인수를 사용하지 않는 const 멤버 함수를 단항 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
const_mem_fun1_ref_t | 참조 인수를 사용하여 초기화할 때 단일 인수를 사용하는 const 멤버 함수를 이항 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
const_mem_fun1_t | 포인터 인수를 사용하여 초기화할 때 단일 인수를 사용하는 const 멤버 함수를 이항 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
default_searcher | |
function | 호출 가능 개체를 래핑하는 클래스입니다. |
hash | 값에 대한 해시 코드를 계산하는 클래스입니다. |
is_bind_expression | bind 를 호출하여 특정 형식이 생성되었는지 테스트하는 클래스입니다. |
is_placeholder | 특정 형식이 자리 표시자인지 테스트하는 클래스입니다. |
mem_fun_ref_t | 참조 인수를 사용하여 non_const 초기화할 때 인수를 사용하지 않는 멤버 함수를 단항 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다.(C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
mem_fun_t | 포인터 인수를 사용하여 non_const 초기화할 때 인수를 사용하지 않는 멤버 함수를 단항 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다.(C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
mem_fun1_ref_t | 참조 인수를 사용하여 non_const 초기화할 때 단일 인수를 사용하는 멤버 함수를 이진 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다.(C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
mem_fun1_t | 포인터 인수를 사용하여 non_const 초기화할 때 단일 인수를 사용하는 멤버 함수를 이진 함수 개체로 호출할 수 있도록 하는 어댑터 클래스입니다.(C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
pointer_to_binary_function | 이항 함수 포인터를 조정 가능한 이항 함수로 변환합니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
pointer_to_unary_function | 단항 함수 포인터를 조정 가능한 단항 함수로 변환합니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
reference_wrapper | 참조를 래핑하는 클래스입니다. |
unary_negate | 지정된 단항 함수의 반환 값을 부정하는 멤버 함수를 제공하는 클래스 템플릿입니다. (C++17에서는 사용되지 않습니다.) |
함수
속성 | 설명 |
---|---|
bind | 호출 가능 개체에 인수를 바인딩합니다. |
bind1st | 이항 함수의 첫 번째 인수를 지정된 값에 바인딩하여 이항 함수 개체를 단항 함수 개체로 변환하는 어댑터를 만드는 도우미 템플릿 함수입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
bind2nd | 이항 함수의 두 번째 인수를 지정된 값에 바인딩하여 이항 함수 개체를 단항 함수 개체로 변환하는 어댑터를 만드는 도우미 템플릿 함수입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
bit_and | 두 매개 변수의 비트 AND(이진 operator& )를 반환합니다. |
bit_not | 매개 변수의 비트 보수(operator~ )를 반환합니다.(C++14에 추가됨) |
bit_or | 두 매개 변수의 비트 OR(operator| )을 반환합니다. |
bit_xor | 두 매개 변수의 비트 XOR(operator^ )를 반환합니다. |
cref | 인수에서 const reference_wrapper 를 생성합니다. |
invoke | |
mem_fn | 단순 호출 래퍼를 생성합니다. |
mem_fun | 포인터 인수를 사용하여 초기화할 때 멤버 함수에 대한 함수 개체 어댑터를 생성하는 데 사용되는 도우미 템플릿 함수입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
mem_fun_ref | 참조 인수를 사용하여 초기화할 때 멤버 함수에 대한 함수 개체 어댑터를 생성하는 데 사용되는 도우미 템플릿 함수입니다. |
not1 | 단항 조건자의 보수를 반환합니다. (C++17에서는 사용되지 않습니다.) |
not2 | 이항 조건자의 보수를 반환합니다. (C++17에서는 사용되지 않습니다.) |
not_fn | 함수 개체의 결과의 보수를 반환합니다. (C++17에 추가됨) |
ptr_fun | 단항 및 이항 함수 포인터를 각각 조정 가능한 단항 및 이항 함수로 변환하는 데 사용되는 도우미 템플릿 함수입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
ref | 인수에서 reference_wrapper 를 생성합니다. |
swap | 두 function 개체를 교환합니다. |
구조체
속성 | 설명 |
---|---|
binary_function | 이항 함수 개체를 제공하는 파생 클래스에 상속될 수 있는 형식을 정의하는 빈 기본 클래스입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
divides | 클래스는 지정된 값 형식의 요소에 대해 나누기 산술 연산을 수행하는 미리 정의된 함수 개체를 제공합니다. |
equal_to | 지정된 형식의 값이 해당 형식의 다른 값과 같은지 테스트하는 이항 조건자입니다. |
greater | 지정된 형식의 값이 해당 형식의 다른 값보다 큰지 테스트하는 이항 조건자입니다. |
greater_equal | 지정된 형식의 값이 해당 형식의 다른 값보다 크거나 같은지 테스트하는 이항 조건자입니다. |
less | 지정된 형식의 값이 해당 형식의 다른 값보다 작은지 테스트하는 이항 조건자입니다. |
less_equal | 지정된 형식의 값이 해당 형식의 다른 값보다 작거나 같은지 테스트하는 이항 조건자입니다. |
logical_and | 이 클래스는 지정된 값 형식의 요소에 대해 논리곱 논리 연산을 수행하고 결과가 참 또는 거짓인지 테스트하는 미리 정의된 함수 개체를 제공합니다. |
logical_not | 이 클래스는 지정된 값 형식의 요소에 대해 부정 논리 연산을 수행하고 결과가 참 또는 거짓인지 테스트하는 미리 정의된 함수 개체를 제공합니다. |
logical_or | 이 클래스는 지정된 값 형식의 요소에 대해 분리 논리 연산을 수행하고 결과가 참 또는 거짓인지 테스트하는 미리 정의된 함수 개체를 제공합니다. |
minus | 이 클래스는 지정된 값 형식의 요소에 대해 빼기 산술 연산을 수행하는 미리 정의된 함수 개체를 제공합니다. |
모듈러스 | 이 클래스는 지정된 값 형식의 요소에 대해 모듈러스 산술 연산을 수행하는 미리 정의된 함수 개체를 제공합니다. |
multiplies | 이 클래스는 지정된 값 형식의 요소에 대해 곱하기 산술 연산을 수행하는 미리 정의된 함수 개체를 제공합니다. |
negate | 이 클래스는 요소 값의 부정을 반환하는 미리 정의된 함수 개체를 제공합니다. |
not_equal_to | 지정된 형식의 값이 해당 형식의 다른 값과 같지 않은지 테스트하는 이항 조건자입니다. |
plus | 클래스는 지정된 값 형식의 요소에 대해 더하기 산술 연산을 수행하는 미리 정의된 함수 개체를 제공합니다. |
unary_function | 단항 함수 개체를 제공하는 파생 클래스에 상속될 수 있는 형식을 정의하는 빈 기본 클래스입니다. (C++11에서는 사용되지 않으며 C++17에서는 제거되었습니다.) |
개체
속성 | 설명 |
---|---|
_1.._M | 대체 가능한 인수에 대한 자리 표시자입니다. |
연산자
속성 | 설명 |
---|---|
연산자== | 호출 가능 개체의 같음 비교를 허용하지 않습니다. |
operator!= | 호출 가능 개체의 같지 않음 비교를 허용하지 않습니다. |