C ++ 라이브러리-<기능>
소개
함수 개체는 함수와 유사한 구문으로 사용되도록 특별히 설계된 개체입니다. std :: function의 인스턴스는 함수, 람다 식, 바인드 식 또는 기타 함수 개체는 물론 멤버 함수에 대한 포인터와 데이터 멤버에 대한 포인터 등 모든 Callable 대상을 저장, 복사 및 호출 할 수 있습니다.
선언
다음은 std :: function에 대한 선언입니다.
template<class >
class function;
C ++ 11
template< class R, class... Args >
class function<R(Args...)>
매개 변수
R − 결과 _ 유형.
argument_type − sizeof ... (Args) == 1이고 T가 Args에서 처음이자 유일한 유형 인 경우 T.
예
아래의 std :: function 예제에서.
#include <functional>
#include <iostream>
struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << '\n'; }
int num_;
};
void print_num(int i) {
std::cout << i << '\n';
}
struct PrintNum {
void operator()(int i) const {
std::cout << i << '\n';
}
};
int main() {
std::function<void(int)> f_display = print_num;
f_display(-9);
std::function<void()> f_display_42 = []() { print_num(42); };
f_display_42();
std::function<void()> f_display_31337 = std::bind(print_num, 31337);
f_display_31337();
std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
const Foo foo(314159);
f_add_display(foo, 1);
std::function<int(Foo const&)> f_num = &Foo::num_;
std::cout << "num_: " << f_num(foo) << '\n';
using std::placeholders::_1;
std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );
f_add_display2(2);
std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 );
f_add_display3(3);
std::function<void(int)> f_display_obj = PrintNum();
f_display_obj(18);
}
샘플 출력은 다음과 같아야합니다.
-9
42
31337
314160
num_: 314159
314161
314162
18
회원 기능
Sr. 아니. | 회원 기능 | 정의 |
---|---|---|
1 | (건설자) | 새로운 std :: function 인스턴스를 생성하는 데 사용됩니다. |
2 | (폐물 소각로) | std :: function 인스턴스를 파괴하는 데 사용됩니다. |
삼 | operator = | 새 대상을 할당하는 데 사용됩니다. |
4 | 교환 | 내용을 교환하는 데 사용됩니다. |
5 | 양수인 | 새 대상을 할당하는 데 사용됩니다. |
6 | 연산자 bool | 유효한 대상이 포함되어 있는지 확인하는 데 사용됩니다. |
7 | 운영자() | 대상을 호출하는 데 사용됩니다. |
비회원 함수
Sr. 아니. | 비회원 함수 | 정의 |
---|---|---|
1 | std :: swap | std :: swap 알고리즘을 전문으로합니다. |
2 | operator == operator! = | std :: function을 nullptr과 비교합니다. |
연산자 클래스
Sr. 아니. | 연산자 클래스 | 정의 |
---|---|---|
1 | bit_and | 비트 AND 함수 객체 클래스입니다. |
2 | bit_or | 비트 OR 함수 객체 클래스입니다. |
삼 | bit_xor | 비트 단위 XOR 함수 객체 클래스입니다. |
삼 | 분할 | 나누기 함수 객체 클래스입니다. |
4 | 동일 | 등식 비교를위한 함수 객체 클래스입니다. |
5 | 더 큰 | 불평등보다 큰 비교를위한 함수 객체 클래스입니다. |
6 | 크거나 같음 | 보다 크거나 같음 비교를위한 함수 객체 클래스입니다. |
7 | 적게 | 불평등 미만 비교를위한 함수 객체 클래스입니다. |
8 | less_equal | 작거나 같음 비교를위한 함수 객체 클래스입니다. |
9 | logical_and | 논리적 AND 함수 객체 클래스입니다. |
10 | logical_not | 논리적 NOT 함수 객체 클래스입니다. |
11 | logical_or | 논리 OR 함수 객체 클래스입니다. |
12 | 마이너스 | 뺄셈 함수 객체 클래스입니다. |
13 | 계수 | 모듈러스 함수 객체 클래스입니다. |
14 | 곱하다 | 곱셈 함수 객체 클래스입니다. |
15 | 부정하다 | 음의 함수 객체 클래스입니다. |
16 | not_equal_to | 비동 등 비교를위한 함수 객체 클래스입니다. |
17 | ...을 더한 | 덧셈 함수 객체 클래스입니다 |