bind2nd 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 de função associando o segundo argumento da função binário para um valor especificado.
template<class Operation, class Type>
binder2nd <Operation> bind2nd(
const Operation& _Func,
const Type& _Right
);
Parâmetros
_Func
O objeto binária da função a ser convertido em um objeto unário de função._Right
O valor que o segundo 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 segundo argumento do objeto binária de função ao valor _Right.
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 Operação e c é uma constante, então bind2nd ( _Func, c ) é equivalente ao construtor da classe binder2nd<Operation> de binder2nd ( _Func, c ) e mais conveniente.
Exemplo
// functional_bind2nd.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 greaterthan15: unary_function<int, bool>
{
public:
result_type operator()(argument_type i)
{
return (result_type)(i > 15);
}
};
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(), bind2nd(greater<int>(), 10));
cout << "The number of elements in v1 greater than 10 is: "
<< result1a << "." << endl;
// Compare counting the number of integers > 15 in the vector
// with a user-defined function object
vector<int>::iterator::difference_type result1b;
result1b = count_if(v1.begin(), v1.end(), greaterthan15());
cout << "The number of elements in v1 greater than 15 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(), bind1st(greater<int>(), 10));
cout << "The number of elements in v1 less than 10 is: "
<< result2 << "." << endl;
}
Requisitos
Cabeçalho: <functional>
namespace: STD