C++ 逻辑错误:无法确定分段错误的原因 for(i=(routeVector.size()-1);i>=0;i--) { cout(0) { 这取决于i和j的类型-如果i和j是无符号的,上述循环将非常愉快地循环-这可能是正在进行的-打印索引,您将看到…它是什么类

C++ 逻辑错误:无法确定分段错误的原因 for(i=(routeVector.size()-1);i>=0;i--) { cout(0) { 这取决于i和j的类型-如果i和j是无符号的,上述循环将非常愉快地循环-这可能是正在进行的-打印索引,您将看到…它是什么类,c++,segmentation-fault,C++,Segmentation Fault,逻辑错误:无法确定分段错误的原因 for(i=(routeVector.size()-1);i>=0;i--) { cout(0) { 这取决于i和j的类型-如果i和j是无符号的,上述循环将非常愉快地循环-这可能是正在进行的-打印索引,您将看到…它是什么类型的exitPoint和connectedExitPoint成员?如果是类,问题也可能出在它的运算符==()函数中。@User1我已修改了代码,请参见上文。I和j的类型是什么?如果类型为无符号且routeVector为空,则(routeVect

逻辑错误:无法确定分段错误的原因
for(i=(routeVector.size()-1);i>=0;i--)
{
cout(0)
{

这取决于
i
j
的类型-如果
i
j
无符号的
,上述循环将非常愉快地循环-这可能是正在进行的-打印索引,您将看到…

它是什么类型的exitPoint和connectedExitPoint成员?如果是类,问题也可能出在它的运算符==()函数中。@User1我已修改了代码,请参见上文。I和j的类型是什么?如果类型为无符号且
routeVector
为空,则
(routeVector.size()-1)
是肯定的。@User1-正如我在回答中所说的,我猜这也是问题所在。您显示的代码中没有任何错误。因此,问题出在您未显示的代码中。请发布一个最小的、完整的、可编译的、可运行的示例来展示问题……分段错误的原因是此时,程序正在访问超出边界的路由向量元素。@Nim确实,这就是问题所在,非常感谢。i和j是
无符号int
    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;
                }
            }
        }
    }
typedef struct branch
{
    unsigned int distance;
    int          connectedExitPoint;
} branch;

typedef struct route
{
    int    exitPoint;
    vector <branch> selectedBranchesVector;
} route;

vector <route> routeVector;