明显是assert报的错, 你按照提示的行数找到那个assert,然后看调用堆栈, 分析一下什么原因吧!

解决方案 »

  1.   


    嗯没错啊,该注意的都注意了、、
    把用vector的地方先都注释掉,看能不能通过
    然后一点点去掉注释,就能够定位到故障点了
      

  2.   

    断点断到出错的地方,从堆栈看自己的代码访问vector那里,元素下标肯定不对了
      

  3.   


    for (i = 0; i < m_lineAcrossCnt; i++) //
    lineCandidate.push_back(m_lineAcross[i]);for (i = 0; i < lineCandidate.size() - 1; i++)
    {
    lineNeighbor.clear();
    lineNeighbor.push_back(lineCandidate[i]);
    }我注释掉lineNeighbor.push_back(lineCandidate[i]);就不会有问题了,可是我不明白怎么就给出这种错了?
      

  4.   


    嗯没错啊,该注意的都注意了、、
    把用vector的地方先都注释掉,看能不能通过
    然后一点点去掉注释,就能够定位到故障点了谢谢你的回复。
    for (i = 0; i < m_lineAcrossCnt; i++) //
    lineCandidate.push_back(m_lineAcross[i]);for (i = 0; i < lineCandidate.size() - 1; i++)
    {
    lineNeighbor.clear();
    lineNeighbor.push_back(lineCandidate[i]);
    }我注释掉lineNeighbor.push_back(lineCandidate[i]);就不会有问题了,可是我不明白怎么就给出这种错了?
      

  5.   


    嗯没错啊,该注意的都注意了、、
    把用vector的地方先都注释掉,看能不能通过
    然后一点点去掉注释,就能够定位到故障点了谢谢你的回复。
    for (i = 0; i < m_lineAcrossCnt; i++) //
    lineCandidate.push_back(m_lineAcross[i]);for (i = 0; i < lineCandidate.size() - 1; i++)
    {
    lineNeighbor.clear();
    lineNeighbor.push_back(lineCandidate[i]);
    }我注释掉lineNeighbor.push_back(lineCandidate[i]);就不会有问题了,可是我不明白怎么就给出这种错了?
    for(i = 0; i < m_lineAcrossCnt; i++) // for或if后面一定要跟花括号,这个习惯必须有
    {
        lineCandidate.push_back(m_lineAcross[i]);
    }
    把上面这段跑一下,先打印一下m_lineAcrossCnt的值
      

  6.   


    嗯没错啊,该注意的都注意了、、
    把用vector的地方先都注释掉,看能不能通过
    然后一点点去掉注释,就能够定位到故障点了谢谢你的回复。
    for (i = 0; i < m_lineAcrossCnt; i++) //
    lineCandidate.push_back(m_lineAcross[i]);for (i = 0; i < lineCandidate.size() - 1; i++)
    {
    lineNeighbor.clear();
    lineNeighbor.push_back(lineCandidate[i]);
    }我注释掉lineNeighbor.push_back(lineCandidate[i]);就不会有问题了,可是我不明白怎么就给出这种错了?
    for(i = 0; i < m_lineAcrossCnt; i++) // for或if后面一定要跟花括号,这个习惯必须有
    {
        lineCandidate.push_back(m_lineAcross[i]);
    }
    把上面这段跑一下,先打印一下m_lineAcrossCnt的值
    嗯好。我跟踪过m_lineAcrossCnt和lineCandidate.size() 的值是一样的,出现问题是lineNeighbor.push_back(lineCandidate[i]);
      

  7.   

    把lineNeighbor和lineCandidate的定义贴出来
      

  8.   

    vector<Line> lineNeighbor;
    vector<Line> lineCandidate;
      

  9.   

    lineNeighbor.push_back(lineCandidate.at(i));
    你这么试试,一般取容器中的内容都是用at而不用[]
    这涉及到一个效率还有可靠性的问题 
      

  10.   


    你那样改,就抛出另外一个bug了
    我查到原因了,因为我这个函数不停的被调用,m_lineAcrossCnt这个变量的值不停的变化,引起空间不断重新配置,指向原来Vetor的迭代器失效了。。我给m_lineAcrossCnt固定值,程序就不会崩溃可是我还是不知道问题应该怎么解决??
      

  11.   


    你那样改,就抛出另外一个bug了
    我查到原因了,因为我这个函数不停的被调用,m_lineAcrossCnt这个变量的值不停的变化,引起空间不断重新配置,指向原来Vetor的迭代器失效了。。我给m_lineAcrossCnt固定值,程序就不会崩溃可是我还是不知道问题应该怎么解决??
    帮不了你了,我觉得你动手能力很欠缺。