在C ++ 11中使用非平凡表达式初始化静态类成员数组

时间:2015-06-05 09:58:17

标签: c++11 clang++

我想对使用const缓存对缓存中的某些静态函数的性能进行基准测试。所以我有类似的东西:

class Foo {

    static double cost(int factor) { <moderately complex function> };

    // Other stuff using the cost() function

};

我想针对像这样的替代版本进行基准测试:

class Foo {
    private:
        static double _cost(int factor) { <same function as before> };
        static const double cost_cache[MAX_FACTOR] = ???;
    public:
        static double cost(int factor) { return cost_cache[factor]; };
    // Other stuff
}

用一种方法以相当于

的方式初始化我的cost_cache数组
for (int idx = 0; i < MAX_FACTOR; ++i)
    cost_cache[idx] = _cost(idx);

在高级功能语言中,我会使用map原语。如何在C ++ 11(或C ++ 14?)中正确初始化它?我看到其他帖子解决类似的问题,如Initializing private member static const array,但其解决方案在我的情况下不适用,我无法提出来源中的10k值逐字。

我正在使用clang++

1 个答案:

答案 0 :(得分:0)

首先用“{}”初始化数组怎么样, 然后通过从文件加载值的方法覆盖元素?