我知道这很简单,所以我提前道歉.
当我试图通过索引访问向量时,我是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)
我究竟做错了什么?
后
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向量中的元素.