C++填充静态值数组
C++ populate array of static values
在C
我有
unsigned long arr[256]={0x00000000L,0x01020304L,0x21223212L,...}
在C++.h
-文件 我有
private:
unsigned long arr[256];
如何使用 256 个常量值填充它(最快的方式.cpp
文件中?
arr[256]={...}
// and
arr={...}
不工作:-\
在构造函数中使用初始值设定项列表:
// .h
class C
{
public:
C();
private:
unsigned long arr[256];
};
// .cpp
C::C() : arr{0x00000000L, 0x01020304L, 0x21223212L, ...} {}
请注意,std::array
可能是语法更直观且可分配的替代方法。
如果你坚持使用纯数组,只需std::memcpy(&this->arr[0], &::initial_values_arr[0], sizeof (::initial_values_arr));
为什么要将常量数组作为成员变量?
如果要更改值,则需要 C++11,并且应该能够以与 C 中相同的方式使用它 - 现在允许非静态非常量成员变量的类内初始化(您可能想看看: C++11 允许非静态和非常量成员的类内初始化。发生了什么变化?).
如果你想要一个常量数组,如果你愿意,你仍然可以使用 C 样式(以及文件的全局或本地数组)。我并不是说这是好的风格,但编译器接受它。
这是
标准的C++代码:
class C
{
private:
unsigned long arr[256] = {0x00000000L,0x01020304L,0x21223212L};
};
auto main() -> int
{
C c; (void) c;
}
不幸的是,它无法使用Visual C++ 19.00.22310.1进行编译。解决方法:
#include <array>
class C
{
private:
std::array<unsigned long, 256> arr;
public:
C(): arr( {0x00000000L,0x01020304L,0x21223212L} ) {}
};
auto main() -> int
{
C c; (void) c;
}
相关文章:
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 静态数组的自由动态数组
- 如何在C++函数中声明静态 2D 数组?
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 基于字节数组生成静态范围整数值
- 如何在C++中删除静态数组?
- 为什么 &a 和 c++ 中的静态数组相同?
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 将在堆栈上声明的元素添加到静态数组
- const_cast静态数组以添加恒常性
- C++访问静态 constexpr 数组
- 初始化类中的静态 const 数组 - C++
- 将静态字符数组中的字符分配给动态分配的字符数组 - 访问冲突
- 动态分配的数组和静态数组之间的区别
- 如何在 C++ 中使用 NULL(或 0)初始化静态字符数组
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 我可以使用 constexpr 函数声明一个静态数组吗?
- 如何在静态函数中使用成员函数数组
- 具有大的2d数组:静态int与int