Namespaces
Variants
Actions

std::valarray<T>::apply

From cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
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.

[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.

Run this code
#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]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/valarray/apply&oldid=160849"

AltStyle によって変換されたページ (->オリジナル) /