用真实值填充向量

-1 c++ vector std stdvector c++11

我想将所有值放入 a 中std::vector true。我写了两种方法:第一个有效,但第二个无效。它告诉我 myproj.exe 已触发断点。你知道问题出在哪里吗?

这个有效:

void first(std::vector<bool>& vect, unsigned int n) 
{       
    for (unsigned int i = 0; i < n; i++) 
    {       
        vect.push_back(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

这一个不:

void secound(std::vector<bool>& vect, unsigned int n) 
{       
    for(unsigned int i = 0; i < n; i++) 
    {
        vect[i] = true; //crash here        
    }
}
Run Code Online (Sandbox Code Playgroud)

Tar*_*ran 6

第一种情况下,您调用push_back它会自动增加向量的大小。

第二种情况下,您尝试访问vect[i]不存在的向量,因为向量的大小为 0。

这里填充向量的最简单方法是

vect = std::vector<bool>(n, true);
Run Code Online (Sandbox Code Playgroud)