std::valarray<T>::apply

来自cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
valarray<T> apply( T func(T))const;
valarray<T> apply( T func(const T&))const;

返回同大小的新 valarray,拥有通过应用 func 函数到元素先前值取得的值。

目录

[编辑]参数

func - 应用到值的函数

[编辑]返回值

作为结果的 valarray,拥有通过应用 func 取得的值。

[编辑]注解

函数可以实现为拥有不同于 std::valarray 的返回类型。此时替换它的类型拥有下列属性:

[编辑]Possible implementation

可以用表达式模板替换下面的直接实现以获得更高效率。

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

[编辑]示例

计算并打印前 10 个正整数的阶乘。

#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{returnstd::round(std::tgamma(n +1));});for(auto n : v)std::cout<< n <<' ';std::cout<<'\n';}

输出:

1 2 6 24 120 720 5040 40320 362880 3628800

[编辑]See also

应用一元函数对象范围中元素
(函数模板)[编辑]
应用一元函数对象范围中元素
(算法函数对象)[编辑]
close