c++ - 计算第一次,加载第二次模式

标签 c++ c++11

我想问一下使用这种模式是否是一个好的做法:

我有一个包含一些原始数据的类。我想从这些数据中得出一些信息,例如:

class my_class{
public:
    int get_integers_sum();
private:
    std::vector<int> all_integers;
};

假设 all_integers 不会改变。这样做好吗:

 class my_class{
    public:
        int get_integers_sum(){
            if(sum==-1){
                sum=sum=std::acculmate(all_integeres);// the proper code ofcourse
            }

            return sum; 
        }
    private:
        std::vector<int> all_integers;
        int sum=-1;
 };

最佳答案

当您知道输入不会改变时,这是一个有用的模式。这种方法的通用名称是 memoization 。您的实现有点缺陷,因为 all_integers 的总和实际上可能是 -1。

关于c++ - 计算第一次,加载第二次模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188744/

相关文章:

c++ - 制作可变参数函数,它采用任意数量的 void 仿函数

c++ - var_ptr==NULL 和 NULL==var_ptr 在各种arch中的区别

c++ - 使用 Open Cascade 读取步骤文件

c++ - 如何比较任意基数的数字

c++ - 类型的部分模板特化

c++ - 测试是否已调用 join

c++ - 在 C++ 中解压参数包

c++ - 与 Windows 重新启动/关闭的交互

c++ - 从粗糙点生成三次贝塞尔曲线

c++ - 为什么要用 make_unique 调用来初始化 unique_ptr?