gpt4 book ai didi

c++ - resize 是否保证 std::valarray 归零?

转载 作者:行者123 更新时间:2023-11-30 02:29:00 26 4
gpt4 key购买 nike

是否 x.resize(1024)保证valarray x会归零吗?
是否std::valarray<float> z(1024);保证它也将被填充为零?

对于 Mac、Windows 和 Linux 是这样吗?即使对于 C++03(我没有使用 C++11)也是如此吗?

(我读过的所有文档似乎都证明了这一点,但是 1)文档 don't explicitely state what happens如果省略第二个参数 2) 我正在尝试调试一个难以重现的奇异错误,其中某些数组默认情况下未归零,我现在无法发布显示此错误的最小代码,但我一旦可用,我会尝试添加一个)


示例代码:

#include <valarray>
#include <complex>

int main()
{
std::valarray<double> x;
std::valarray<std::complex<double>> y;
std::valarray<float> z(1024);
x.resize(1024);
y.resize(1024);
// are all x, y, z filled with zeros?
}

最佳答案

valarray<T>::resize的标准声明是

void resize(size_t sz, T c = T());

哪里c是用于新元素(如果有)的值。如果某些实现决定将其实现为两个重载函数而不是带有默认参数的单个函数(这是允许的),则它必须保留标准行为。

这意味着是的,如果resize创建新元素,它们必须进行值初始化(在您的情况下为零初始化)。

关于c++ - resize 是否保证 std::valarray 归零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com