我知道这很简单,所以我提前道歉。
我试图通过索引访问向量时是segfaulting。例如......
vector<float> some_vec;
int i = 0;
for (some iterator loop here)
{
//snip
some_vec[i] = some_float;
i++;
}
我做错了什么?
答案 0 :(得分:5)
之后
std::vector<float> some_vec;
你的矢量是空的。你不能访问其中的任何元素,因为没有任何元素。
如果要将值添加到其中,则需要使用push_back()
for (some iterator loop here)
{
//snip
some_vec.push_back(some_float);
i++;
}
或者,如果您事先知道大小,并且向量中虚拟值的构造是否便宜(就像float
和其他内置函数一样),您可以resize()
提前矢量
some_vec.resize(42);
或使用适量的元素
创建它std::vector<float> some_vec(42);
鉴于上述两者中的任何一个,您可以访问向量中的元素0..41
。
答案 1 :(得分:3)
在向量上调用resize()函数,然后调用push_back()来添加元素。在此之后,您可以使用索引来访问元素。
答案 2 :(得分:1)
我们无法看到的代码中的其他地方可能存在问题,但很可能是因为您没有调用resize()
,push_back()
或insert()
i
不在矢量。使用some_vec.at(i) = some_float;
检查i
是否在向量的有效范围内。
答案 3 :(得分:1)
我的猜测是你的vector
是空的。使用push_back(some_float)
向其中添加元素。