静态const数组的静态const数组的双精度

时间:2015-10-16 16:58:09

标签: c++ arrays

我设法制作了double个数组的数组,包含所有这些staticconst

# myclass.h
class myclass {
    static constexpr double I_1[] = {... , ... , ... ...};
    static constexpr double I_2[] = {... , ... , ... ...};
    static constexpr double I_3[] = {... , ... , ... ...};
    ...

    static constexpr const double* list[] = {I_1,I_2,I_3,...};
}

请注意,所有数组都可以有不同的大小。

现在,这种技术需要在cpp文件中定义这些静态变量:

# myclass.cpp
constexpr const double* myclass::list[];
constexpr double myclass::I_1[], myclass::I_2[], myclass::I_3[],...

如果有许多数组,这个列表可能会很长。这对我来说似乎有点复杂。

有更好的方法吗?

奖金问题:有没有办法在不需要C ++ 11的情况下完成?

1 个答案:

答案 0 :(得分:0)

这将提供我认为OP正在寻找的东西。

在某处的标题中,不需要C ++ 11

class ConfigDB
{
public:
    static const std::vector<std::vector<double>> db;

};

分配ConfigDB :: db的cpp文件需要c ++ 11作为漂亮的初始化列表。

const std::vector<std::vector<double>> ConfigDB::db
{
    {1,2,3,4},
    {5,6,7}
};

非C ++ 11替代方案包括加载所有vector<double>,然后将其加载到vector<vector<double>>。与OP的阵列解决方案一样糟糕或更糟。