c++ - 每次循环初始化一个 vector

标签 c++ vector

当我声明一个 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
            }
        }
    }
    
  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
            }
        }
    }
    

最佳答案

文档是您的 friend 。每当您想做某事时,只需通读标准库实用程序列表,直到找到 the one you want。 !

std::fill(v.begin(), v.end(), 0);

这本质上等同于老式的 memset,但增加了类型安全性。

关于c++ - 每次循环初始化一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32762112/

相关文章:

c++ - 在构造函数的可变参数中使用其他模板化类执行模板化类的初始化

c++ - 如何在 C++ 中执行另一个 while 循环期间获取流输入

c++ - 将功能从控制台应用程序移动到共享库项目似乎会带来不相关的编译错误

c++ - 需要解释一下,这一行到底发生了什么?

java - Java中如何删除Vector中的多个元素?

c++ - OSX 10.8 上 C++ 中列表内存泄漏的 vector

c++ - 如何在已执行的方法中传递字段的值?

c++ - Comparator 可以用来设置新的 key ,不是吗?

c++ - 如何在 C++ 中将 vector 和标量相乘?

c++ - Std::vector 不更改类内的数据