尝试在结构内打印矢量大小时出现分段错误

时间:2010-09-22 13:30:39

标签: c++

这段代码给了我一个错误

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;
  }
}

这给出了分段错误。

4 个答案:

答案 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