由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 有没有会自动聚合的操作符重载或宏?
相关主题
a[i]=i++为什么不能成功排序
关于placement newJs machine learning lib
C++糟粕和需要避免的。C++编程问题:union inside struct
lua里面实现点乘请教C++ STL中priority_queue模板参数中的Compare函数
【讨论】为什么要用友员来实现算符重载?一个C的void指针的问题
简单c++问题,大家练练手请问有哪位师傅知道haskell语言的?
重载 ^ 操作符编译出错C++的"初始化"小结
能否对某个库进行操作符重载?基本功不扎实,问个问题
相关话题的讨论汇总
话题: 操作符话题: units话题: 重载话题: 运算话题: 或宏
进入Programming版参与讨论
1 (共1页)
l*****y
发帖数: 58
1
会自动聚合的操作符重载或宏
我们通常会有一些数据有比较复杂的结构.
data A,B,C,D,R ;
它们之间的运算仅仅是遍历所有数据成员,对每个数据成员进行运算。 那这种操作符
重载后的运算
R = A + B
实质上是
for_all_units {
R(id) = A(id) + B(id)
}
而 R = A + B - C
实质上是
for_all_units {
tmp(id) = A(id) + B(id)
}
for_all_units {
R(id) = tmp(id) - C(id)
}
当多个这样的运算符联立时,即使是用 -O2 之类的优化编译,遍历所有单元的操作会
重复多次。 有没有什么成熟的design pattern 或 可以自动合并的宏定义之类, 可以
自动实现将
R = A + B - C - D
编译成
for_all_units {
R(id) = A(id) + B(id) - C(id) - D(id)
}
谢谢
l******t
发帖数: 55733
2
Monad
l*****y
发帖数: 58
3
谢谢,我本能的反应也是用 functional programming 来实现比较自然。
我对C++ 和functional programming 都了解不深。 那请问有没有现成的Monad in c++
之类的库可推荐呢?
如果没有,那用boost之类的functional programming功能来实现一个Monand有没有可
能?

【在 l******t 的大作中提到】
: Monad
p***o
发帖数: 1252
4
It's called expression template in C++. Boost has a lot of support or you
can use Eigen directly.

++

【在 l*****y 的大作中提到】
: 谢谢,我本能的反应也是用 functional programming 来实现比较自然。
: 我对C++ 和functional programming 都了解不深。 那请问有没有现成的Monad in c++
: 之类的库可推荐呢?
: 如果没有,那用boost之类的functional programming功能来实现一个Monand有没有可
: 能?

d****i
发帖数: 4809
5
高手,第一次听说这个C++的feature

【在 p***o 的大作中提到】
: It's called expression template in C++. Boost has a lot of support or you
: can use Eigen directly.
:
: ++

l*****y
发帖数: 58
6
啊,太感谢了。 看了一下你推荐的两个东西,感觉很合用。

【在 p***o 的大作中提到】
: It's called expression template in C++. Boost has a lot of support or you
: can use Eigen directly.
:
: ++

b*******s
发帖数: 5216
7
expression template
l*********s
发帖数: 5409
8
太谢谢了,第一次听说这个特性!
b*******s
发帖数: 5216
9
check out Dr Dobb's to get these kinda topics

【在 l*********s 的大作中提到】
: 太谢谢了,第一次听说这个特性!
x****k
发帖数: 2932
10
学习了,多谢:-)

【在 p***o 的大作中提到】
: It's called expression template in C++. Boost has a lot of support or you
: can use Eigen directly.
:
: ++

l*********s
发帖数: 5409
11
多谢!

【在 b*******s 的大作中提到】
: check out Dr Dobb's to get these kinda topics
1 (共1页)
进入Programming版参与讨论
相关主题
基本功不扎实,问个问题【讨论】为什么要用友员来实现算符重载?
Haskell很难学。。简单c++问题,大家练练手
我老给你们指条明路吧重载 ^ 操作符编译出错
Linq不是syntactic sugar能否对某个库进行操作符重载?
a[i]=i++为什么不能成功排序
关于placement newJs machine learning lib
C++糟粕和需要避免的。C++编程问题:union inside struct
lua里面实现点乘请教C++ STL中priority_queue模板参数中的Compare函数
相关话题的讨论汇总
话题: 操作符话题: units话题: 重载话题: 运算话题: 或宏