Standard C++ Library Copyright 1998, Rogue Wave Software, Inc. NAME for_each - Applies a function to each element in a range. SYNOPSIS #include <algorithm> template <class InputIterator, class Function> void for_each(InputIterator first, InputIterator last, Function f); DESCRIPTION The for_each algorithm applies function f to all members of the sequence in the range [first, last), where first and last are iterators that define the sequence. Since this a non-mutating algorithm, the function f cannot make any modifications to the sequence, but it can achieve results through side effects (such as copying or printing). If f returns a result, the result is ignored. COMPLEXITY The function f is applied exactly last - first times. EXAMPLE // // for_each.cpp // #include <vector> #include <algorithm> #include <functional> #include <iostream> using namespace std; // Function class that outputs its argument times x template <class Arg> class out_times_x : private unary_function<Arg,void> { private: Arg multiplier; public: out_times_x(const Arg& x) : multiplier(x) { } void operator()(const Arg& x) { cout << x * multiplier << " " << endl; } }; int main() { int sequence[5] = {1,2,3,4,5}; // Set up a vector vector<int> v(sequence,sequence + 5); // Setup a function object out_times_x<int> f2(2); for_each(v.begin(),v.end(),f2); // Apply function return 0; } Program Output 2 4 6 8 10 WARNINGS If your compiler does not support default template parame- ters, then you always need to supply the Allocator template argument. For instance, you have to write: vector<int, allocator<int> > instead of: vector<int> If your compiler does not support namespaces, then you do not need the using declaration for std. SEE ALSO Algorithms, Function_Objects
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |