Compartilhar via


bind1st Function

Uma função do modelo auxiliar que cria um adaptador para converter um objeto binária de função em um objeto unário da função que o primeiro argumento da função binário para um valor especificado.

template<class Operation, class Type>
   binder1st <Operation> bind1st(
      const Operation& _Func, 
      const Type& _Left
   );

Parâmetros

  • _Func
    O objeto binária da função a ser convertido em um objeto unário de função.

  • _Left
    O valor que o primeiro argumento do objeto binária da função deve ser associado.

Valor de retorno

O objeto unário de função que resultados de associação o primeiro argumento do objeto binária de função ao valor _Left.

Comentários

As pastas de função são um tipo de adaptador de função e, porque retornam objetos de função, podem ser usadas em determinados tipos de composição de uma função para construir expressões mais complicadas e mais avançados.

Se _Func é um objeto do tipo Operation e c é uma constante, então bind1st (_Func, c) é equivalente ao construtor binder1st<Operation> da classe de binder1st (_Func, c) e é mais conveniente.

Exemplo

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

using namespace std;

// Creation of a user-defined function object
// that inherits from the unary_function base class
class greaterthan5: unary_function<int, bool>
{
public:
    result_type operator()(argument_type i)
    {
        return (result_type)(i > 5);
    }
};

int main()
{
    vector<int> v1;
    vector<int>::iterator Iter;

    int i;
    for (i = 0; i <= 5; i++)
    {
        v1.push_back(5 * i);
    }

    cout << "The vector v1 = ( " ;
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
        cout << *Iter << " ";
    cout << ")" << endl;

    // Count the number of integers > 10 in the vector
    vector<int>::iterator::difference_type result1a;
    result1a = count_if(v1.begin(), v1.end(), bind1st(less<int>(), 10));
    cout << "The number of elements in v1 greater than 10 is: "
         << result1a << "." << endl;

    // Compare: counting the number of integers > 5 in the vector
    // with a user defined function object
    vector<int>::iterator::difference_type result1b;
    result1b = count_if(v1.begin(), v1.end(), greaterthan5());
    cout << "The number of elements in v1 greater than 5 is: "
         << result1b << "." << endl;

    // Count the number of integers < 10 in the vector
    vector<int>::iterator::difference_type result2;
    result2 = count_if(v1.begin(), v1.end(), bind2nd(less<int>(), 10));
    cout << "The number of elements in v1 less than 10 is: "
         << result2 << "." << endl;
}
  
  
  

Requisitos

Cabeçalho: <functional>

namespace: STD

Consulte também

Referência

Standard Template Library