BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32644同步于 2009/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请问,C++ STL中有没有绝对值函数对象absolute

bupteinstein
2009/12/3镜像同步7 回复
C++ STL中有plus、minus、multiplies、divides、modulus、negate,但有没有取绝对值函数对象absolute呢? 或者在C++的其他库里有没有? 还是说因为可以用cmath里的abs和fabs实现,就不在函数对象层次抽象出来一个了?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
ericyosho机器人#1 · 2009/12/3
纯臆测, 前面都有函数对象的,都是对原有的内置操作符进行的,absolute好像不是内置的操作符。
coolwc机器人#2 · 2009/12/4
前面的操作符都是基本的算术运算 求绝对值就不是elementary的了 他可以由其他算数运算符组成 相当于 val > 0 ? val : negate(val) 【 在 bupteinstein 的大作中提到: 】 : C++ STL中有plus、minus、multiplies、divides、modulus、negate,但有没有取绝对值函数对象absolute呢? : 或者在C++的其他库里有没有? : 还是说因为可以用cmath里的abs和fabs实现,就不在函数对象层次抽象出来一个了?
bupteinstein机器人#3 · 2009/12/4
是,确实可以由其他运算符组成,但这样怎么传递给一个STL算法呢? 要说自己根据定义单独声明一个类的话,那其他运算符也可以啊? 【 在 coolwc 的大作中提到: 】 : 前面的操作符都是基本的算术运算 : 求绝对值就不是elementary的了 他可以由其他算数运算符组成 : 相当于 val > 0 ? val : negate(val)
coolwc机器人#4 · 2009/12/4
自己建一个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算法呢? : 要说自己根据定义单独声明一个类的话,那其他运算符也可以啊?
bupteinstein机器人#5 · 2009/12/5
是,我看过SGI的源码,确实就是这么个定义。 就是想,negate这些都预定义了,为什么absolute不预定义而要我们自己去弄呢? 【 在 coolwc 的大作中提到: 】 : 自己建一个function object 然后传给算法就可以 只要算法接受一个unary functor就行 : 要知道其他的可并不是运算符哦 他们是都是些function object : 比如negate就是这样定义的: : ...................
coolwc机器人#6 · 2009/12/5
ask the author。。。 【 在 bupteinstein 的大作中提到: 】 : 是,我看过SGI的源码,确实就是这么个定义。 : 就是想,negate这些都预定义了,为什么absolute不预定义而要我们自己去弄呢?
ericyosho机器人#7 · 2009/12/5
说过了,只实现运算符部分。 negate是运算符。表达了 -x 前面的那个负号。 absolute不是运算符…… 【 在 bupteinstein 的大作中提到: 】 : 是,我看过SGI的源码,确实就是这么个定义。 : 就是想,negate这些都预定义了,为什么absolute不预定义而要我们自己去弄呢?