【问题标题】:How to store and get previously calculated value如何存储和获取先前计算的值
【发布时间】:2016-06-16 12:33:22
【问题描述】:

我是 C++ 新手。我已经编写了一个代码来计算值,但我不确定如何获得先前计算的值,它在上次调用中计算过。据我了解,这样做的一种方法是将值存储在数组中,但我不确定这样做的确切结构/方式。提前致谢。

double CalculateValue(Node* node)
{ 
float gamma=0.3;
double Value = 0.0;

Value = ((1-gamma)* previousValue)+ gamma); // how to get this previous value
if (Value > previousValue)

【问题讨论】:

  • static 可能会有所帮助,但将其封装在一个类中并使用一个成员似乎更好。
  • 编写一个斐波那契数列程序,你会学会的!我保证!

标签: c++ c++11 visual-c++ c++14


【解决方案1】:

我强烈建议避免使用全局/静态变量,最好创建一个只存储值并具有成员函数来进行计算的小类。

【讨论】:

    【解决方案2】:

    如果您需要找到两次调用函数返回的值之间的差异,那么类似下面的方法应该可以解决问题: { const auto val1 = CalculateValue(); const auto val2 = CalculateValue(); std::cout << "Difference is: " << std::abs(val1 - val2) << std::endl; }

    【讨论】:

      【解决方案3】:

      您正在寻找 memoize 模式(不是 memoize,如果您在谷歌上搜索它)。这可能会派上用场:Memoized, recursive factorial function?

      【讨论】:

        【解决方案4】:

        这是一个使用类来实现目标的示例 (我还没有测试过,所以这里和那里可能会有一些错误)

        class Solution {
        public:
            void init_value(double val){ // initalize the value
                _previousValue = val;
            }
            double CalculateValue(Node* node){
                float gamma=0.3;
                double Value = 0.0;
        
                Value = ((1-gamma)* _previousValue)+ gamma); // _value would be your previous value
                if (Value > _previousValue){ 
                    //whatever you want to do in here
                }
        
                _previousValue = Value; // set _previousValue to the new calculated Value
                return Value;
            }
        private:
            double _previousValue; // call init_value(val) to initliaze _previousValue = val OR you can hard code _previousValue if it is always like 0 or something
        

        }

        int main() {
            Solution solution = new Solution();
            solution.init_value(0);
            Node *node; // I don't know what your Node struct looks like so...
            double value = CalculateValue(node);
            return 0;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-18
          • 2012-07-06
          相关资源
          最近更新 更多