这段代码给了我一个错误
struct state{
int time_taken;
vector<int>time_live;
string loc_name;
vector<int>loc;
};
for(int u=0;u<(A[start].loc.size());u++)
{
l=A[start].loc[1];
if(A[l].time_taken < min_time)
{
min_time=A[l].time_taken;
finish = l;
}
}
这给出了分段错误。
答案 0 :(得分:1)
首先,如果A[start]
超出范围,那么您可能会遇到问题,这可能是也可能不是seg错误,具体取决于A
是什么。
其次,在循环中,您有A[start].loc[1]
,如果A[start].loc
为空,则会超出范围。您的意思是loc[u]
吗?
答案 1 :(得分:0)
从上面的代码开始。
在for循环之前确保
start < A.size();
内部循环
l = A[start].loc[u]; // instead of 1
之前
if(A[l].time_taken < min_time)
check
if (l < A.size())
答案 2 :(得分:0)
我喜欢Anthony Williams的第一点,但我的猜测是A[l]
超出了范围。
答案 3 :(得分:0)
也许您可以尝试使用A.at(start)来访问A,如果超出范围,它现在将抛出异常而不是segfaulting