-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)
在第一种情况下,您调用push_back它会自动增加向量的大小。
在第二种情况下,您尝试访问vect[i]不存在的向量,因为向量的大小为 0。
这里填充向量的最简单方法是
vect = std::vector<bool>(n, true);
Run Code Online (Sandbox Code Playgroud)