many different function object adaptors, including
Finally, the STL includes many different predefined function objects, including arithmetic operations (
Fill a
vector<int> V(100);
generate(V.begin(), V.end(), rand);
Sort a
struct less_mag : public binary_function<double, double, bool> {
bool operator()(double x, double y) { return fabs(x) < fabs(y); }
};
vector<double> V;
…
sort(V.begin(), V.end(), less_mag());
Find the sum of elements in a
struct adder : public unary_function<double, void> {
adder() : sum(0) {}
double sum;
void operator()(double x) { sum += x; }
};
vector<double> V;
…
adder result = for_each(V.begin(), V.end(), adder()); [3]
cout << 'The sum is ' << result.sum << endl;
Remove all elements from a
list<int> L;
…
list<int>::iterator new_end = remove_if(L.begin(), L.end(), compose2 (logical_and<bool>(), bind2nd(greater<int>(), 100), bind2nd(less<int>(), 1000)));
L.erase(new_end, L.end());
• Generator
• Unary Function
• Binary Function
• Predicate
• Binary Predicate
• Adaptable Generator
• Adaptable Unary Function
• Adaptable Binary Function
• Adaptable Predicate
• Adaptable Binary Predicate
• plus
• minus
• multiplies
(formerly called times )
• divides
• modulus
• negate
• equal_to
• not_equal_to
• greater
• less
• greater_equal
• less_equal
• logical_and
• logical_or
• logical_not
• subtractive_rng
• identity
• project1st
• project2nd
• select1st
• select2nd
• unary_function
• binary_function
• unary_compose
• binary_compose
• unary_negate
• binary_negate
• binder1st
• binder2nd
• pointer_to_unary_function
• pointer_to_binary_function
• compose1
• compose2
• not1