如何在没有segfaulting的情况下访问向量中的索引

zeb*_*bra -8 c++ vector

我知道这很简单,所以我提前道歉.

当我试图通过索引访问向量时,我是segfaulting.例如...

vector<float> some_vec;
int i = 0;

for (some iterator loop here)
{
    //snip
    some_vec[i] = some_float;
    i++;
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

sbi*_*sbi 5

std::vector<float> some_vec;
Run Code Online (Sandbox Code Playgroud)

你的矢量是空的.你不能访问其中的任何元素,因为没有任何元素.

如果要将值放入其中,则需要使用将它们附加到向量 push_back()

for (some iterator loop here)
{
    //snip
    some_vec.push_back(some_float);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您事先知道大小,并且向量中虚拟值的构造是否便宜(就像它float和其他内置函数一样),您可以resize()提前向量

some_vec.resize(42);
Run Code Online (Sandbox Code Playgroud)

或使用适量的元素创建它

std::vector<float> some_vec(42);
Run Code Online (Sandbox Code Playgroud)

鉴于上述两者中的任何一个,您可以访问0..41向量中的元素.