Functions as Algorithm Arguments
To increase their flexibility and power, several algorithms allow the passing 
of user-defined auxiliary functions. These functions are called internally by 
the algorithms.
Examples of Using Functions as Algorithm Arguments
The simplest example is the for_each() algorithm. It 
calls a user-defined function for each element of the specified range. Consider 
the following example:
The for_each() algorithm calls the passed print() function for every element in the range [coll.begin(),coll.end()). Thus, the output of the program is 
as follows:
Algorithms use auxiliary functions in several variants—some optional, some 
mandatory. In particular, you can use them to specify a search criterion, a 
sorting criterion, or to define a manipulation while transferring elements from 
one collection to another.
In this example, square() is used to square each element of coll1 while it is transformed to coll2 (see figure below). The program has the following output:
Figure : How transform () operates
Predicates
A special kind of auxiliary function for algorithms is a predicate. 
Predicates are functions that return a Boolean value. They are often used to 
specify a sorting or a search criterion. Depending on their purpose, predicates 
are unary or binary. Note that not every unary or binary function that returns a 
Boolean value is a valid predicate. The STL requires that predicates always 
yield the same result for the same value. This rules out functions that modify 
their internal state when they are called.
Unary Predicates
Unary predicates check a specific property of a single argument. A typical example is a function that is used as a search criterion to find the first prime number:
In this example, the find_if() algorithm is used to 
search for the first element of the given range for which the passed unary 
predicate yields true. Here, the predicate is the isPrime() function. This function checks whether a number is 
a prime number. By using it, the algorithm returns the first prime number in the 
given range. If the algorithm does not find any element that matches the 
predicate, it returns the end of the range (its second argument). This is 
checked after the call. The collection in this example has a prime number 
between 24 and 30. So the output of the program is as follows:
Binary Predicates
Binary predicates typically compare a specific property of two arguments. For 
example, to sort elements according to your own criterion you could provide it 
as a simple predicate function. This might be necessary because the elements do 
not provide operator < or because you wish to use a 
different criterion.
The following example sorts elements of a set by the first name and last name 
of a person:
Note that you can also implement a sorting criterion as a function object. 
This kind of implementation has the advantage that the criterion is a type, 
which you could use, for example, to declare sets that use this criterion for 
sorting its elements.
-----------------------------------------------------------------
See Also:
-----------------------------------------------------------------
See Also:
-----------------------------------------------------------------
- Complete Tutorial of C++ Template's
- Standard Template Library Tutorial
- Inter Process Communication Tutorial
- Advance Programming in C & C++
-----------------------------------------------------------------
+Operates.png)
 
 
No comments:
Post a Comment