gpt4 book ai didi

C++ 表达式作为变量

转载 作者:行者123 更新时间:2023-11-30 00:59:01 24 4
gpt4 key购买 nike

我正在研究 DSEL 并希望拥有以下内容:

Bra ij;
Ket kl, cd;

(ij||kl); // initialize some array
(ij||cd); // ditto

....
T(i,j,k,l)*(ij||kl); // do some math without recomputing (ij||kl)

所以基本上我想让表达式充当变量。可能吗?

到目前为止,我的想法是拥有一个“单例”工厂,它使用表达式 (ij|kl) 生成/查找数组。还有什么吗?

最佳答案

如果您不想重新计算 ij||kl,则只需将它们存储到表达式返回的任何类型的变量中。这正是变量存在的原因之一。


好的,这是我能想到的唯一方法,尽管听起来不太好。你可以做的是,当操作符||调用函数时,将操作数和结果存储到实例变量中(如果运算符|| 是某个类的成员函数),或存储到静态分配的变量中(如果运算符|| 在其上声明为 lonesome)。

下一次算||被调用时,检查操作数是否与上次调用时相同。如果是,只需返回您存储的最后一个结果。否则,计算一个新的结果。

这应该可以解决问题。令人讨厌的部分是它需要将操作数复制到其他变量,这可能会根据情况而付出高昂的代价。然而,如果变量是不可变的,您可以只保留指向操作数的指针,这样会更便宜一些。

如果您想更进一步,您可以使用 map 或其他东西来存储操作数和之前多次调用的结果。这样,如果您需要为多个不同的计算执行此操作,这将起作用。

关于C++ 表达式作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5131412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com