다음을 통해 공유


ptr_fun Function

단항 및 이항 함수 포인터에 각각 단항 및 이항 융통성 있는 함수를 변환 하는 데 도우미 템플릿 함수입니다.

template<class Arg, class Result>
   pointer_to_unary_function<Arg, Result, Result (*)(Arg)>
      ptr_fun(Result (*_pfunc)(Arg));
template<class Arg1, class Arg2, class Result>
   pointer_to_binary_function<Arg1, Arg2, Result, Result (*)(Arg1, Arg2)>
      ptr_fun(Result (*_pfunc)(Arg1, Arg2));

매개 변수

  • _pfunc
    하는 융통성 있는 함수에 변환 될 단항 또는 이항 함수 포인터입니다.

반환 값

단항 함수를 반환 하는 첫 번째 템플릿 함수 pointer_to_unary_function <Arg, 결과> (*_pfunc).

두 번째 템플릿 함수를 이진 함수 반환 pointer_to_binary_function <Arg1, Arg2, 결과> (*_pfunc).

설명

함수 포인터 함수 개체 및 함수를 매개 변수로 예상 하 고는 표준 템플릿 라이브러리 알고리즘에 전달할 수 있습니다 있지만 적용할 수 없습니다.값을 바인딩 또는 negator 함께 사용 하는 어댑터를 사용 하는 이러한 적응을 가능 하 게 중첩된 형식과 제공 되어야 합니다.단항 및 이항 함수 포인터로의 변환의 ptr_fun 도우미 함수 단항 및 이항 함수 포인터를 사용 하려면 함수 어댑터 수 있습니다.

예제

// functional_ptr_fun.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>
#include <cstring>
#include <iostream>

int main( )
{
    using namespace std;
    vector <char*> v1;
    vector <char*>::iterator Iter1, RIter;

    v1.push_back ( "Open" );
    v1.push_back ( "up" );
    v1.push_back ( "the" );
    v1.push_back ( "opalescent" );
    v1.push_back ( "gates" );

    cout << "Original sequence contains: " ;
    for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; ++Iter1 )
        cout << *Iter1 << " ";
    cout << endl;

    // To search the sequence for "opalescent"
    // use a pointer_to_function conversion
    RIter = find_if( v1.begin( ), v1.end( ),
        not1 ( bind2nd (ptr_fun ( strcmp ), "opalescent" ) ) );

    if ( RIter != v1.end( ) )  
    {
        cout << "Found a match: " 
            << *RIter << endl;
    }
}

Output

Original sequence contains: Open up the opalescent gates
Found a match: opalescent

요구 사항

헤더: <functional>

네임 스페이스: std

참고 항목

참조

표준 템플릿 라이브러리