我正在执行以下操作:
double dVar[100] = { 0.1 };
但是当我调试时,它只将 0.1 放到 dVar[0] 中,其余的都是 0.0;
我只是想避免 for 循环。
有人可以帮帮我吗?
我正在执行以下操作:
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在他的回答中所建议的那样,从数组更改为 astd::vector<double>
将允许初始化为零以外的值。如果可以更改大小的事实std::vector
不吸引人,并且您的编译器具有一些 c++14 功能,您可能需要考虑使用std::dynarray
. 无法更改 a 中的元素数量,dynarray
并且可以在初始化时为所有元素分配一个非零值,类似于std::vector
:
std::dynarray<double> dVar(100, 0.1);
这是预期的行为。如果您没有显式初始化数组的所有元素,它们将自动设置为零。
要将所有元素初始化为0.1
,您可以使用 astd::vector
并使用带有显式初始化的构造函数
std::vector dVar(100, 0.1);
这将创建一个包含 100 个元素的向量,全部设置为 0.1。