std:: binary_function
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<functional>
|
||
|
template
<
class
Arg1,
|
(C++11부터 사용 중단됨)
(C++17에서 제거됨) |
|
std::binary_function
는 두 개의 인수를 가진 함수 객체를 생성하기 위한 기본 클래스입니다.
std::binary_function
는
operator
(
)
를 정의하지 않습니다; 파생 클래스에서 이를 정의할 것으로 예상됩니다.
std::binary_function
은 템플릿 매개변수로 정의된 세 가지 타입 -
first_argument_type
,
second_argument_type
그리고
result_type
- 만 제공합니다.
일부 표준 라이브러리 함수 객체 어댑터들, 예를 들어
std::not2
는 자신이 적용되는 함수 객체가 특정 타입들을 정의하고 있기를 요구합니다;
std::not2
는 적용되는 함수 객체가
first_argument_type
과
second_argument_type
라는 두 가지 타입을 가지고 있기를 요구합니다.
std::binary_function
에서 두 개의 인자를 받는 함수 객체들을 파생시키는 것은 이러한 어댑터들과 호환되도록 만드는 쉬운 방법입니다.
std::binary_function
는 C++11에서 사용 중단되었으며 C++17에서 제거되었습니다.
멤버 타입
| 유형 | 정의 |
first_argument_type
|
Arg1
|
second_argument_type
|
Arg2
|
result_type
|
Result
|
예제
#include <algorithm> #include <functional> #include <iostream> #include <vector> struct same : std::binary_function<int, int, bool> { bool operator()(int a, int b) const { return a == b; } }; int main() { std::vector<char> v1{'A', 'B', 'C', 'D', 'E'}; std::vector<char> v2{'E', 'D', 'C', 'B', 'A'}; std::vector<bool> v3(v1.size()); std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), std::not2(same())); std::cout << std::boolalpha; for (std::size_t i = 0; i < v1.size(); ++i) std::cout << v1[i] << " != " << v2[i] << " : " << v3[i] << '\n'; }
출력:
A != E : true B != D : true C != C : false D != B : true E != A : true
참고 항목
|
(C++11)
|
복사 생성 가능한 모든 호출 가능 객체의 복사 가능 래퍼
(클래스 템플릿) |
|
(C++23)
|
주어진 호출 시그니처에서 한정자를 지원하는 모든 호출 가능 객체의 이동 전용 래퍼
(클래스 템플릿) |
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨)
|
함수 포인터로부터 어댑터 호환 함수 객체 래퍼 생성
(함수 템플릿) |
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨)
|
이항 함수 포인터를 위한 어댑터 호환 래퍼
(클래스 템플릿) |
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨)
|
어댑터 호환 단항 함수 베이스 클래스
(클래스 템플릿) |