返回信息流C++ STL中有plus、minus、multiplies、divides、modulus、negate,但有没有取绝对值函数对象absolute呢?
或者在C++的其他库里有没有?
还是说因为可以用cmath里的abs和fabs实现,就不在函数对象层次抽象出来一个了?
这是一条镜像帖。来源:北邮人论坛 / cpp / #32644同步于 2009/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请问,C++ STL中有没有绝对值函数对象absolute
bupteinstein
2009/12/3镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
前面的操作符都是基本的算术运算
求绝对值就不是elementary的了 他可以由其他算数运算符组成
相当于 val > 0 ? val : negate(val)
【 在 bupteinstein 的大作中提到: 】
: C++ STL中有plus、minus、multiplies、divides、modulus、negate,但有没有取绝对值函数对象absolute呢?
: 或者在C++的其他库里有没有?
: 还是说因为可以用cmath里的abs和fabs实现,就不在函数对象层次抽象出来一个了?
是,确实可以由其他运算符组成,但这样怎么传递给一个STL算法呢?
要说自己根据定义单独声明一个类的话,那其他运算符也可以啊?
【 在 coolwc 的大作中提到: 】
: 前面的操作符都是基本的算术运算
: 求绝对值就不是elementary的了 他可以由其他算数运算符组成
: 相当于 val > 0 ? val : negate(val)
自己建一个function object 然后传给算法就可以 只要算法接受一个unary functor就行
要知道其他的可并不是运算符哦 他们是都是些function object
比如negate就是这样定义的:
template <class T> struct negate : unary_function <T,T> {
T operator() (const T& x) const
{return -x;}
};
【 在 bupteinstein 的大作中提到: 】
: 是,确实可以由其他运算符组成,但这样怎么传递给一个STL算法呢?
: 要说自己根据定义单独声明一个类的话,那其他运算符也可以啊?
是,我看过SGI的源码,确实就是这么个定义。
就是想,negate这些都预定义了,为什么absolute不预定义而要我们自己去弄呢?
【 在 coolwc 的大作中提到: 】
: 自己建一个function object 然后传给算法就可以 只要算法接受一个unary functor就行
: 要知道其他的可并不是运算符哦 他们是都是些function object
: 比如negate就是这样定义的:
: ...................
ask the author。。。
【 在 bupteinstein 的大作中提到: 】
: 是,我看过SGI的源码,确实就是这么个定义。
: 就是想,negate这些都预定义了,为什么absolute不预定义而要我们自己去弄呢?
说过了,只实现运算符部分。
negate是运算符。表达了 -x 前面的那个负号。
absolute不是运算符……
【 在 bupteinstein 的大作中提到: 】
: 是,我看过SGI的源码,确实就是这么个定义。
: 就是想,negate这些都预定义了,为什么absolute不预定义而要我们自己去弄呢?