![]() |
![]() |
![]() |
Aqui se ven algunos de los algoritmos mas utiles para procesamiento de secuencias de números. Actualmente existen muchos más.
Lista de algoritmos de conjuntos
template <class InputIterator, class T>
T accumulate(InputIterator first, InputIterator last, T init)
{
for ( ; first != last; ++first)
init = init + *first;
return init;
}
template <class InputIterator, class T, class BinaryOperation>
T accumulate(InputIterator first, InputIterator last, T init,
BinaryOperation binary_op)
{
for ( ; first != last; ++first)
init = binary_op(init, *first);
return init;
}
accumulate() incrementa el valor de init utilizando el operator+(). La version que recibe una función como argumento aplica en cada iteracion una operacion binaria a init y un elemento de la secuencia y lo asigna a init.
template <class InputIterator1, class InputIterator2, class T>
T inner_product(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, T init)
{
for ( ; first1 != last1; ++first1, ++first2)
init = init + (*first1 * *first2);
return init;
}
template <class InputIterator1, class InputIterator2, class T,
class BinaryOperation1, class BinaryOperation2>
T inner_product(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, T init, BinaryOperation1 binary_op1,
BinaryOperation2 binary_op2)
{
for ( ; first1 != last1; ++first1, ++first2)
init = binary_op1(init, binary_op2(*first1, *first2));
return init;
}
inner_product() calcula el pruducto vectorial de dos secuencias, es decir las multiplica componente a componente y va acumulando los resultados.
template <class InputIterator, class OutputIterator>
OutputIterator partial_sum(InputIterator first, InputIterator last,
OutputIterator result)
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum(InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op)
partial_sum() suma a cada elemento de una secuencia la suma de los valores anteriores. Podemos cambia la operacion de suma utilizando la version que permite pasarle un objeto función.
&
template <class InputIterator, class OutputIterator>
OutputIterator adjacent_difference(InputIterator first, InputIterator last,
OutputIterator result)
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator adjacent_difference(InputIterator first, InputIterator last,
OutputIterator result,
BinaryOperation binary_op)
adjacent_difference() crea una secuencia de salida que consiste en la diferencia existente entre cada par de elementos adjacentes. Podemos utilizar otra funcion diferente a las resta mediante la versió nque permite utilizar un objeto función.