将双数组初始化为非零值
Initialise a double array to a non-zero value
我正在执行以下操作:
double dVar[100] = { 0.1 };
但当我调试时,它只将0.1设置为dVar[0],其余都是0.0;
我只是想避免一个for循环。
有人能帮帮我吗?
但当我调试时,它只将0.1设置为dVar[0],其余都是0.0;
这是预期的行为。如果初始值设定项包含的元素少于聚合(数组),则对其余元素执行值初始化,在这种情况下,会将它们设置为零。
虽然不是初始化,但为了避免显式手动编码循环,请使用std::fill()
:
double dVar[100];
std::fill(std::begin(dVar), std::end(dVar), 0.1);
正如Olaf Dietsche在他的回答中所建议的那样,从数组更改为std::vector<double>
将允许初始化为零以外的值。如果std::vector
可以更改大小这一事实并不吸引人,并且您的编译器具有一些c++14功能,那么您可能需要考虑使用std::dynarray
。不可能更改dynarray
中的元素数量,并且在初始化时可以为所有元素分配除零以外的值,类似于std::vector
:
std::dynarray<double> dVar(100, 0.1);
这是预期行为。如果不显式初始化数组的所有元素,它们将自动设置为零。
要将所有元素初始化为0.1
,可以使用std::vector
并使用具有显式初始化的构造函数
std::vector dVar(100, 0.1);
这将创建一个包含100个元素的向量,所有元素都设置为0.1。
相关文章:
- 从 BubbleSort* 类型的右值初始化 'AssortedSorter&' 类型的非常量引用无效"
- 为什么我总是收到此错误:从类型为"农场动物"的右值初始化类型的非常量引用无效|
- 用非零值初始化void指针的正确(或最安全)方法
- 从类型 'Matrix&' 的右值初始化 类型的非 const 引用无效 'Matrix'
- 从类型为"矩阵"的右值初始化类型为"矩阵"的非常量引用无效
- 从右值初始化非常量引用
- 从右值初始化非常量引用无效
- 使用值初始化的数组对零初始化数据
- 具有用户定义构造函数的非聚合类的值初始化
- 使用类型"bool"类型的值初始化类型"int &"(非常量限定)的引用是否是一种黑客?
- 从类型 'YAML::Node&' 的右值初始化 类型的非常量引用无效 'YAML::Node'
- 为什么通过右值初始化非常量引用有效(在 C++11 中)
- Visual C++ 2015 中右值的非常量引用初始化无效
- 从类型为"foo*"的右值初始化类型为"foo*&"的非常量引用无效?
- 从右值初始化非常量引用无效
- 从 int 类型的右值初始化 &分数类型的非常量引用无效?
- 值初始化:默认初始化或零初始化
- 从arma::subvec的类型的右值初始化类型的非常量引用无效
- 如何保护数组定义,防止使用非零值进行不完整的初始化
- 如何强制编译器为未初始化的变量设置非零值