我有一个模拟,它对大量的步骤进行一系列的计算(按1e11的顺序)。但是,并非每个模拟都需要进行所有计算(尽管对于任何模拟,每个步骤都必须进行相同的计算)。因为模拟要花很多时间运行,即使是一个
if
如果
对于一小部分的计算,这可以通过简单地定义不同的函数和使用正确的计算组合来实现,即。
void justA() {
// calculate A
}
void justB() {
// calculate B
}
void both() {
// calculate A
// calculate B
}
并使用函数指针预先确定要使用哪个(如
this
问题)。但对于一组更大的可能计算,这变得不切实际。显然,这可以通过一系列的措施来解决
如果
if (calculateA) {
// calculate A
}
if (calculateB) {
// calculate B
}
// ...
if (calculateZ) {
// calculate Z
}
但对于1e11阶跃模拟,这需要进行1e11评估
计算(所有计算结果相同)。
我的问题是:
有没有办法不用每次通话就可以做到这一点
如果
它不需要为每一个可能的计算组合硬编码一个不同的函数?
注意
-这必须在运行时完成,而不是使用C++预处理器指令。