当我声明一个向量时,它默认填充为零.作为模拟的一部分,我希望它能够在循环中初始化每个迭代.什么是正确有效的方法呢?
我想谈两个案例:
我希望将其归零为已知值,即nSteps
#include <iostream>
#include <vector>
using namespace std;
const int nSteps = 10000;
const int nReal = 10;
int main()
{
for (unsigned int i = 0 ; i<nRealization; i++)
{
vector<double> v(nSteps);
for (unsigned int j = 0 ; j<nSteps ; j++)
{
//stuff going on with v
}
}
}
Run Code Online (Sandbox Code Playgroud)长度未定义(使用的函数给出push_back)
#include <iostream>
#include <vector>
using namespace std;
const int nSteps = 10000;
const int nReal = 10;
int main()
{
for (unsigned int i = 0 ; i<nRealization; i++)
{
vector<double> v;
// some function that uses push_back gives v its length
for (unsigned int j = 0 ; j<nSteps ; j++)
{
//stuff going on with v
}
}
}
Run Code Online (Sandbox Code Playgroud)文档是你的朋友.无论何时你想做一件事,只需阅读标准库实用程序列表,直到找到你想要的那个!
std::fill(v.begin(), v.end(), 0);
Run Code Online (Sandbox Code Playgroud)
这基本上相当于一种老式的memset,但增加了类型安全性.