【发布时间】:2011-12-20 01:53:47
【问题描述】:
我知道这很简单,所以我提前道歉。
尝试按索引访问向量时出现段错误。比如……
vector<float> some_vec;
int i = 0;
for (some iterator loop here)
{
//snip
some_vec[i] = some_float;
i++;
}
我做错了什么?
【问题讨论】:
-
谁能说?这取决于
some iterator loop here和//snip中的实际代码。循环中的迭代器范围是否为空?你有没有调整some_vec的大小?当你得到的每一个答案都是猜测时,这很好地表明了一个不好的问题...... -
www.debug-my-code-for-me.com/i-wont-show-you-it-though.html
-
你们怎么了?这是一个几乎开箱即用的可编译重现,很可能会导致斑马描述的运行时错误,并且可以很容易地回答。根本不需要投票和/或关闭。
-
¤ 您只需要确保
some_vec.size()大于您的索引,即在该索引处确实有 is 向量元素。作为一个新手,您可能会从编写v.at(i)而不是v[i]中受益,因为at会进行范围检查,如果不正常则抛出异常,保证。作为后来的专业人员,您可能会为了更实用(但通常不保证)检测和更易读的源代码而牺牲保证。 :-) 干杯&hth.,