for_each
Da cppreference.com
#include <algorithm> template< class InputIterator, class UnaryFunction > UnaryFunction for_each( InputIterator first, InputIterator last, UnaryFunction f );
Aplica uma certa função f a cada elemento da sequência delimitada por [first, last).
Índice |
[editar] Parâmetros
first, last - a sequência de elementos no qual se deseja aplicar a função
f - a função a ser aplicada
[editar] Retorno
a função aplicada
[editar] Função equivalente
template<class InputIterator, class UnaryFunction> UnaryFunction for_each(InputIterator first, InputIterator last, UnaryFunction f) { for (; first != last; ++first) { f(*first); } return f; }
[editar] Exemplo
No exemplo abaixo, uma função unária é definida para incrementar todos os elementos de um vetor:
template<class T> struct increment : public unary_function<T, void> { void operator()(T& x) { x++; } }; ... int nums[] = {3, 4, 2, 9, 15, 267}; const int N = 6; cout << "Antes, nums[] contem: "; for (int i = 0; i < N; i++) { std::cout << nums[i] << " "; } std::cout << std::endl; std::for_each(nums, nums + N, increment<int>()); std::cout << "Depois, nums[] contem: "; for (int i = 0; i < N; i++) { std::cout << nums[i] << " "; }
Saída:
Antes, nums[] contem: 3 4 2 9 15 267 Depois, nums[] contem: 4 5 3 10 16 268
[editar] Complexidade
linear na distância entre first e last