Partilhar via


Função bind1st

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

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

Parâmetros

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

  • _Left
    O valor para o qual o primeiro argumento de objeto binário da função deve ser associado.

Valor de retorno

O objeto unário de função que resulta da associação o primeiro argumento de objeto binário da função ao valor _Left.

Comentários

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

Se _Func é um objeto de 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: <funcional>

Namespace: std

Consulte também

Referência

Biblioteca de Modelos Padrão