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 ...을 더한 덧셈 함수 객체 클래스입니다