Namespaces
Variants

std::valarray<T>:: apply

From cppreference.net
valarray < T > appliquer ( T func ( T ) ) const ;
valarray < T > appliquer ( T func ( const T & ) ) const ;

Retourne un nouveau valarray de même taille avec des valeurs acquises en appliquant la fonction func aux valeurs précédentes des éléments.

Table des matières

Paramètres

func - fonction à appliquer aux valeurs

Valeur de retour

Le valarray résultant avec les valeurs acquises en appliquant la fonction func .

Notes

La fonction peut être implémentée avec un type de retour différent de std::valarray . Dans ce cas, le type de remplacement possède les propriétés suivantes :

Implémentation possible

Les implémentations directes suivantes peuvent être remplacées par des expression templates pour une efficacité accrue.

template<class T>
valarray<T> valarray<T>::apply(T func(T)) const
{
    valarray<T> other = *this;
    for (T& i : other)
        i = func(i);
    return other;
}
template<class T>
valarray<T> valarray<T>::apply(T func(const T&)) const
{
    valarray<T> other = *this;
    for (T& i : other)
        i = func(i);
    return other;
}

Exemple

Calcule et affiche les 10 premières factorielles.

#include <cmath>
#include <iostream>
#include <valarray>
int main()
{
    std::valarray<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    v = v.apply([](int n) -> int
                {
                    return std::round(std::tgamma(n + 1));
                });
    for (auto n : v)
        std::cout << n << ' ';
    std::cout << '\n';
}

Sortie :

1 2 6 24 120 720 5040 40320 362880 3628800

Voir aussi

applique un objet fonction unaire aux éléments d'un intervalle
(modèle de fonction)
applique un objet fonction unaire aux éléments d'un intervalle
(objet fonction d'algorithme)