C++ 什么是纯函数?
我发现这句话:C++ 什么是纯函数?,c++,function,predicate,C++,Function,Predicate,我发现这句话: 使其成为纯函数 谓词纯度:谓词是返回是/否答案的函数对象,通常作为布尔值。函数是纯函数 如果其结果仅取决于其参数,则具有数学意义 (注意,“纯”的使用与纯虚拟无关 功能) 不允许谓词保留或访问影响结果的状态 运算符()的,包括成员状态和全局状态。 更愿意将运算符()作为的常量成员函数 谓词(见项目15) 本声明中提到的纯函数是什么?有人能举例说明吗?提前感谢。这是一个纯函数: int foo(int n) { return n*2; } int i = 42; int b
本声明中提到的纯函数是什么?有人能举例说明吗?提前感谢。这是一个纯函数:
int foo(int n)
{
return n*2;
}
int i = 42;
int bar(int n)
{
++i;
return n*i;
}
调用它的结果只取决于它的参数
这不是一个纯粹的函数:
int foo(int n)
{
return n*2;
}
int i = 42;
int bar(int n)
{
++i;
return n*i;
}
返回的值取决于参数以外的内容。函数是纯函数,如果:
int foo(std::vector<int> v) {
static std::vector<int> tmp;
tmp.resize(v.size);
std::transform(v.begin(), v.end(), tmp.begin(), [](int a) {return a * a;});
return std::accumulate(tmp.begin(), tmp.end(), 0);
}
intfoo(标准::向量v){
静态std::向量tmp;
tmp.调整大小(v.大小);
std::transform(v.begin(),v.end(),tmp.begin(),[](inta){返回a*a;});
返回std::accumulate(tmp.begin(),tmp.end(),0);
}
函数foo有一个状态(静态向量),但是它在语义上是不可观察的,因此它是纯向量。这是一个愚蠢的函数,但它应该说明这一点。引用提供了一个定义,因此不完全清楚您认为混淆的部分是什么?当然最简单的put函数是no op
int f(int n){return n;}
@EdHeal或justreturn 42代码>。