代码之家  ›  专栏  ›  技术社区  ›  William Miller devops-admin

函数定义中有条件执行计算的最佳方法

  •  1
  • William Miller devops-admin  · 技术社区  · 7 年前

    我有一个模拟,它对大量的步骤进行一系列的计算(按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++预处理器指令。

    1 回复  |  直到 7 年前
        1
  •  -1
  •   TypeIA    7 年前

    我假设你没有1e11=10000000000(一千亿) 不同的 可能执行的操作。如果你这样做了,我想你有一个 许多 存储程序的内存。相反,我假设可以按某种顺序执行多次的操作的数量要少得多。

    这个顺序是如何确定的?解决办法将在很大程度上取决于这一点。

    if 如果

    如果 do / while for