首页 > 解决方案 > 从另一个静态常量数组初始化静态常量数组(计算量很小)

问题描述

所以我有一堆无符号类型的静态常量数组。我在标题中声明它们并在 cpp 文件中初始化它们。阵列非常大(它们是基于 OFDM 的发射器的载波索引)。但是我有文档中的值。所以这只是一个复制粘贴初始化的问题。到目前为止,这工作正常。

但是,我需要第二组数组,它​​们只不过是原始集合 + 一个常量值。

在标题中

class C
{
static const uint32_t A[288];
static const uint32_t A_ext[288];
}

在cpp中

const uint32_t C::A[288] = {1,2,3......};

我希望 A_ext 是

A_ext[i] = A[i] + 5;

我希望这些也被定义为静态常量,因为所有这些数组都意味着只能在项目中的其他任何地方读取。它们就像可以在项目的其他任何地方访问的标准表。

我该怎么做呢?

标签: c++arraysstatic

解决方案


我会避免相互依赖的静态初始化。你可以使用一个

struct carrier_indices_t {
    uint32_t A[288];
    uint32_t A_ext[288];
};
class C {
    static const carrier_indices_t carrier_indices;        
}

接着

const carrier_indices_t C::carrier_indices = foo();

哪里fooconstexpr返回 a 的函数carrier_indices_t

或者,只存储一个数组并提供两个静态方法来访问它(一个偏移量为+5)。


推荐阅读