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

static const array of static const arrays of doubles

本文关键字:数组 const 静态 双精度型      更新时间:2023-10-16

我设法制作了一个double s数组的数组,拥有所有这些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的情况下做到这一点?

这将提供我相信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>>中。