for (i = (routeVector.size() - 1); i >= 0; i--)
{
cout << "Connected to -> " << routeVector[i].exitPoint;
for (j = (routeVector.size() - 1); j >= 0; j--)
{
if (routeVector[i].selectedBranchesVector.size() > 0)
{
cout << "\n: routeVector[i].selectedBranchesVector[0].connectedExitPoint" <<
routeVector[i].selectedBranchesVector[0].connectedExitPoint;
******cout << "\nrouteVector[j].exitPoint:" << routeVector[j].exitPoint;
if (routeVector[i].selectedBranchesVector[0].connectedExitPoint == routeVector[j].exitPoint)
{
cout << "Connected to -> " << routeVector[i].selectedBranchesVector[0].connectedExitPoint;
}
}
}
}
盯着的线条给我一个分段错误,我不明白为什么。逻辑错误:无法确定分段错误的原因
如果“routeVector”事中“selectedBranchesVector”,它不会有甚至杀入内线,如果。
上述问题的原因是什么?
EDIT 1:
为了使问题更清楚,我打印出该语句的两个条件,并显示在盯着线的误差。
的结构是:
typedef struct branch
{
unsigned int distance;
int connectedExitPoint;
} branch;
typedef struct route
{
int exitPoint;
vector <branch> selectedBranchesVector;
} route;
vector <route> routeVector;
它是什么类型的exitPoint和connectedExitPoint成员? 如果是类,问题可能也在它的operator ==()函数中。 – SKi
@ User1我修改了代码,参见上文。 –
什么是i和j的类型?如果这个类型是无符号的并且'routeVector'是空的,那么'(routeVector.size() - 1)'是肯定的。 – SKi