Namespaces
Variants
Actions

std::valarray<T>::apply

From cppreference.com
< cpp‎ | numeric‎ | valarray
 
C++
 
Numerics library
 
std::valarray
valarray<T> apply( T func(T) ) const;
valarray<T> apply( T func(const T&) ) const;

Returns a new valarray of the same size with values which are acquired by applying function func to the previous values of the elements.

Contents

[edit] Parameters

func - function to apply to the values

[edit] Return value

The resulting valarray with values acquired by applying function func.

[edit] Notes

The function can be implemented with the return type different from std::valarray. In this case, the replacement type has the following properties:

[edit] Possible implementation

Following straightforward implementations can be replaced by expression templates for a higher efficiency.

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;
}

[edit] Example

Calculates and prints the first 10 factorials.

#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';
}

Output:

1 2 6 24 120 720 5040 40320 362880 3628800

[edit] See also

applies a unary function object to elements from a range
(function template) [edit]
applies a unary function object to elements from a range
(algorithm function object)[edit]

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant