This shows you the differences between two versions of the page.
| Next revision | Previous revision Next revision Both sides next revision | ||
|
cpp:functors [2020/05/31 20:32] gthanos created |
cpp:functors [2020/06/01 05:20] gthanos [Η συνάρτηση for_each] |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| ===== Η συνάρτηση for_each ===== | ===== Η συνάρτηση for_each ===== | ||
| - | Η συνάρτηση [[http:// | + | Η συνάρτηση [[http:// |
| + | <code cpp> | ||
| + | template< | ||
| + | Function for_each(InputIterator first, InputIterator last, Function fn) { | ||
| + | while (first!=last) { | ||
| + | fn (*first); | ||
| + | ++first; | ||
| + | } | ||
| + | return fn; // or, since C++11: return move(fn); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Παρακάτω δίνεται ένα παράδειγμα, | ||
| <code cpp prefix_str.cpp> | <code cpp prefix_str.cpp> | ||
| #include < | #include < | ||
| - | #include < | ||
| #include < | #include < | ||
| #include < | #include < | ||
| - | #include < | ||
| - | |||
| - | #include < | ||
| - | #include < | ||
| using namespace std; | using namespace std; | ||
| Line 42: | Line 49: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ==== Χρήση ενός function object αντί για συνάρτηση ==== | ||
| Παρατηρήστε ότι ο κώδικας δουλεύει σωστά, με την υποσημείωση ότι κάθε φορά που θέλετε να αλλάξετε το prefix το οποίο προστίθεται στα περιεχόμενα του // | Παρατηρήστε ότι ο κώδικας δουλεύει σωστά, με την υποσημείωση ότι κάθε φορά που θέλετε να αλλάξετε το prefix το οποίο προστίθεται στα περιεχόμενα του // | ||
| Line 53: | Line 62: | ||
| #include < | #include < | ||
| #include < | #include < | ||
| - | |||
| - | #include < | ||
| - | #include < | ||
| using namespace std; | using namespace std; | ||