gpt4 book ai didi

c++ - 在cpp中初始化数组并用零填充

转载 作者:太空狗 更新时间:2023-10-29 20:23:32 26 4
gpt4 key购买 nike

我是新的 c++,从 matlab 切换到更快地运行模拟。
我想初始化一个数组并用零填充它。

    # include <iostream>
# include <string>
# include <cmath>
using namespace std;

int main()
{
int nSteps = 10000;
int nReal = 10;
double H[nSteps*nReal];
return 0;
}

它产生一个错误:

expected constant expression    
cannot allocate an array of constant size 0
'H' : unknown size

你是怎么做到这个简单的事情的?是否有带有命令的库,例如在 matlab 中:

zeros(n);

最佳答案

具有单个初始化器的基于堆栈的数组在其末尾之前都是零填充的,但是您需要使数组边界等于 const

#include <iostream>

int main()
{
const int nSteps = 10;
const int nReal = 1;
const int N = nSteps * nReal;
double H[N] = { 0.0 };
for (int i = 0; i < N; ++i)
std::cout << H[i];
}

Live Example

对于动态分配的数组,最好使用 std::vector,它也不需要编译时已知边界

#include <iostream>
#include <vector>

int main()
{
int nSteps = 10;
int nReal = 1;
int N = nSteps * nReal;
std::vector<double> H(N);
for (int i = 0; i < N; ++i)
std::cout << H[i];
}

Live Example .

或者(但不推荐),您可以 manually allocate

这样的零填充数组
double* H = new double[nSteps*nReal](); // without the () there is no zero-initialization

关于c++ - 在cpp中初始化数组并用零填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32755672/

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