Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocná funkce šablony, která vytvoří adaptér pro převedení binárního objektu funkce na unární objekt funkce pomocí vazby prvního argumentu binární funkce na zadanou hodnotu.
template<class Operation, class Type>
binder1st <Operation> bind1st(
const Operation& _Func,
const Type& _Left
);
Parametry
_Func
Funkce binární objekt převést na objekt unární funkce._Left
Hodnota, na které má být vázán první argument funkce binární objekt.
Vrácená hodnota
Unární funkce objektu, který je výsledkem první argument funkce binární objekt vazbu hodnoty_Left.
Poznámky
Funkci pojiva jsou druhem funkce adaptéru a vzhledem k tomu, že se vrátí funkce objektů lze v určitých typech složení funkce vytvářet složité a výkonný výrazy.
If _Func is an object of type Operation and c is a constant, then bind1st (_Func, c) is equivalent to the binder1st class constructor binder1st<Operation> (_Func, c) and is more convenient.
Příklad
// 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;
}
Požadavky
Záhlaví: <functional>
Obor názvů: std