每个循环初始化一个向量

jar*_*ead 0 c++ vector

当我声明一个向量时,它默认填充为零.作为模拟的一部分,我希望它能够在循环中初始化每个迭代.什么是正确有效的方法呢?

我想谈两个案例:

  1. 我希望将其归零为已知值,即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)
  2. 长度未定义(使用的函数给出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)

Lig*_*ica 5

文档是你的朋友.无论何时你想做一件事,只需阅读标准库实用程序列表,直到找到你想要的那个!

std::fill(v.begin(), v.end(), 0);
Run Code Online (Sandbox Code Playgroud)

这基本上相当于一种老式的memset,但增加了类型安全性.