为什么一对向量的problemPathCoordinate向量为空?

时间:2016-03-02 10:28:20

标签: c++11

我试图用一对较大的矢量来填充一对较小的矢量对,但没有成功。以下是couts及其输出的相关代码。希望这足够详细。

    /*******************Problems Occur*****************/

        int iFirst=problemsStartAt;//first index to copy
        int iLast=problemsEndAt-1;//last index -1, 11th stays
        int iLen=iLast-iFirst;//10-8=2
        //if(problemsStartAt!=0)//I.a
        if(problemsStartAt!=0&&problemsEndAt!=0)//I.b
        {
            v_problem_temp=allPathCoordinates[problemsStartAt];
            cout<<"266:"<<v_problem_temp.size()<<endl;
            cout<<"267:"<<allPathCoordinates.at(1).size()<<endl;
            for(vector<pair<int,int>>::iterator  it2=v_problem_temp.begin();
            it2!=v_problem_temp.end();
            ++it2)
                {
                    apair=*it2;
                    point[apair.first][apair.second]=Yellow;
                    cout<<apair.first<<","<<apair.second<<endl;
                }
                problemsPathCoordinate.resize(iLen);
                cout<<"iLen*sizeof(problemsPathCoordinate):"      <<iLen*sizeof(problemsPathCoordinate)<<endl;


                    memcpy(&problemsPathCoordinate[0],&allPathCoordinates[iFirst],iLen*sizeof(problemsPathCoordinate));
        cout<<"279:problemsPathCoordinate.size():"<<problemsPathCoordinate.size()<<endl;

        problemsPathCoordinate.resize(iLen);
        memcpy(&problemsPathCoordinate[0],&allPathCoordinates[iFirst],iLen*sizeof(problemsPathCoordinate));
        cout<<"283:problemsPathCoordinate.size():"<<problemsPathCoordinate[0].size()<<endl;
        cout<<"284:problemsPathCoordinate.size():"<<problemsPathCoordinate[1].size()<<endl;

        cout<<"286:allPathCoordinates.size():"<<allPathCoordinates.size()<<endl;
        cout<<"287:allPathCoordinates.size():"<<allPathCoordinates.size()<<endl;
        //from http://stackoverflow.com/questions/35265577/c-reverse-a-smaller-range-in-a-vector


}
    Output:
    759: path NOT full-filled, number: 8
    755: Problems START here at:8
    759: path NOT full-filled, number: 9
    700: Problems END here at: 11
    266:0
    267:0
    iLen*sizeof(problemsPathCoordinate):72
    279:problemsPathCoordinate.size():3
    283:problemsPathCoordinate.size():0
    284:problemsPathCoordinate.size():0
    286:allPathCoordinates.size():79512
    287:allPathCoordinates.size():79512
    time:39 seconds

为什么三个problemPathCoordinate元素为空。怎么解决? 博

1 个答案:

答案 0 :(得分:0)

for(vector&lt; vector&gt;&gt; :: iterator it = allPathCoordinates.begin(); it!= allPathCoordinates.end(); ++ it)     {         allPathCoordinates.erase(allPathCoordinates.begin()+ 5,allPathCoordinates.end() - 2);         v_temp = *它;         //cout<<"v_temp.size():"<

    for (vector<pair<int,int> >::iterator it2 = v_temp.begin(); it2 != v_temp.end(); ++it2) {
        //v_temp.erase(v_temp.begin()+2);
        apair = *it2;
        //cout << "(" << apair.first << "," << apair.second << ") ; ";
        openPoints[apair.first][apair.second]=0;
        closedPoints[apair.first][apair.second]=1;
        allObstacles[apair.first][apair.second]=Wall;
        point[apair.first][apair.second]=Yellow;
    }
    /