在哪里放置常量数组
Where to put a constant array?
我正在编写一个函数,该函数具有多个具有许多数值的常量数组。这些数组包含多项式方程的系数,并且不会更改。现在,我在同一个函数(.cpp File)中定义了数组,例如:
double coefficients[7] = {
271.155123745294,
-2.03521046106355,
8.79645207223641E-03,
-1.38958348112727E-05,
-2.048607610462E-08,
9.372391616E-11,
-8.397701E-14
};
看看我的代码,我对代码的"外观"不是很满意,并问自己是否有更好的解决方案(例如,将一堆常量值放在单独的文件或标头中)。这不是一个真正的问题,但在我看来,读者会从算法中分心。
常量放在它们自己的文件中,并将它们#include
到您需要的地方 - 这不是问题。
顺便说一句,你说常量,但在你的例子中你的数组不是const
- 但如果你不打算改变它,它可能是。
你可以
-
将数组常量与函数一起放在命名空间中(匿名命名空间可能就足够了),
-
将它们作为
static
常量与函数一起放在全局命名空间中(注意:不推荐使用static
来表示数据) -
将它们放在单独的访问器函数中,可以
static
。
顺便说一下,一定要添加const
.
这也通知编译器它们是常量。
除了上面的答案之外,还有一件事:把它放在配置文件中。只有在编译时不需要它时才能执行此操作,但随后可以更新常量而无需重新编译/重新分配代码。它仍然可以是一个 const,因为您可以在静态初始化期间读取和解析配置文件。
双变量coefficients
使用const
类型限定符。
查看我的代码,我对代码的"外观"不是很满意
是的,你是对的。它看起来不太好,有更好的方法可以做到这一点。
如果对变量使用修饰符并将其置于函数定义之外,则可以获得更好的可读性static
。或者,您可以在将要访问它的函数定义正上方.cpp
文件中将其全局化。
是的,separate accessor functions
(使其static
)也是一个好主意,如其中一个答案所述。
您也可以尝试 X 宏,如果它有助于解决代码可读性问题。
- 是默认情况下分配给char数组常量的值
- 如何创建长度由常量参数指定的数组
- C++常量数组的编译时间较长
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 使用双指针传递 2D 常量数组
- 将字符串数组传递给接受常量字符**的函数
- 检查输入 std::array 指针数据是否等于某个常量数组
- 为什么不能用常量表达式声明数组?
- 如何在可执行文件中存储常量数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 初始化常量字符* 数组
- C++将常量字符* 指针数组传递给对象
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
- 为什么不建议使用宏符号常量定义一个固定长度的数组呢
- 我可以使用常量定义数组的长度,那么为什么 int d[b] 不起作用呢?
- 如何为包含另一个类实例的数组制作常量 getter?
- LLVM 无法将数组类型强制转换为常量数组
- 如何删除#define使用在c++数组常量
- 静态数组常量是否会影响共享库布局