类约瑟夫环问题

int CPMFKaisakiEditMain::CalAllKirinukiGroup(
            std::vector AllKirinukiCrv,        // [I/ ]
            std::vector AllKirinukiAds,       // [I/ ]
            std::vector< std::vector > &GropuKirinukiCrv,   // [ /O]
            std::vector< std::vector > &GroupKirinukiAds  // [ /O]
)
/**/
{
 std::vector tem;  //save one closed graph
 std::vector temEname;
 VECTOR BeginVector;   //beginpoint of one closed graph
 VECTOR TemVector;   //next point of the closed graph
 int i = 0;
 vector::iterator itDel;
 vector::iterator itDel2;
 int crvtype;
 
 //case of circle

 for(i=0; i {  
  geo_SengataGet(&AllKirinukiCrv[i], &crvtype);
  if(GEO_EN == crvtype)
  {
   tem.push_back(AllKirinukiCrv[i]);
   temEname.push_back(AllKirinukiAds[i]);
   GropuKirinukiCrv.push_back(tem);
   GroupKirinukiAds.push_back(temEname);
   itDel = AllKirinukiCrv.begin()+i;
   AllKirinukiCrv.erase(itDel);
   itDel2 = AllKirinukiAds.begin()+i;
   AllKirinukiAds.erase(itDel2);
  }
 }
 
 while(!AllKirinukiCrv.empty())
 {
  tem.push_back(AllKirinukiCrv[0]);
  temEname.push_back(AllKirinukiAds[0]);
  ///
  geo_SengataGet(&AllKirinukiCrv[0], &crvtype);
  if(GEO_SENBUN == crvtype)
  {
   GEO_VEC_COPY(&AllKirinukiCrv[0].line.pnt1,&BeginVector);
   GEO_VEC_COPY(&AllKirinukiCrv[0].line.pnt2,&TemVector);
  }
  else if(GEO_ENKO == crvtype)
  {
   GEO_VEC_COPY(&AllKirinukiCrv[0].circle.pnt1,&BeginVector);
   GEO_VEC_COPY(&AllKirinukiCrv[0].circle.pnt2,&TemVector);
  }
  else
  {
   return 0;
  }
  
  itDel = AllKirinukiCrv.begin();     
        AllKirinukiCrv.erase(itDel);    
  itDel2 = AllKirinukiAds.begin();     
        AllKirinukiAds.erase(itDel2); 
  
  while(geo_TenTenIcchi(&TemVector,&BeginVector,1e-6,1e-6) == GEO_FALSE)
  {
   for(i=0; i   {
    geo_SengataGet(&AllKirinukiCrv[i], &crvtype);
    if(GEO_SENBUN == crvtype)
    {
     if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].line.pnt1,1e-6,1e-6) == GEO_TRUE)
     {
      GEO_VEC_COPY(&AllKirinukiCrv[i].line.pnt2, &TemVector);
      tem.push_back(AllKirinukiCrv[i]);
      temEname.push_back(AllKirinukiAds[i]);
      itDel = AllKirinukiCrv.begin()+i;
      AllKirinukiCrv.erase(itDel);
      itDel2 = AllKirinukiAds.begin()+i;
      AllKirinukiAds.erase(itDel2);
      break;
     }
     else if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].line.pnt2,1e-6,1e-6) == GEO_TRUE)
     {
      GEO_VEC_COPY(&AllKirinukiCrv[i].line.pnt1, &TemVector);
      tem.push_back(AllKirinukiCrv[i]);
      temEname.push_back(AllKirinukiAds[i]);
      itDel = AllKirinukiCrv.begin()+i;
      AllKirinukiCrv.erase(itDel);
      itDel2 = AllKirinukiAds.begin()+i;
      AllKirinukiAds.erase(itDel2);
      break;
     }
     else
     {
      continue;
     }
    }
   else if(GEO_ENKO == crvtype)
   {    
    if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].circle.pnt1,1e-6,1e-6) == GEO_TRUE)
    {
     GEO_VEC_COPY(&AllKirinukiCrv[i].circle.pnt2, &TemVector);
     tem.push_back(AllKirinukiCrv[i]);
     temEname.push_back(AllKirinukiAds[i]);
     itDel = AllKirinukiCrv.begin()+i;
     AllKirinukiCrv.erase(itDel);
     itDel2 = AllKirinukiAds.begin()+i;
     AllKirinukiAds.erase(itDel2);
     break;
    }
    else if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].circle.pnt2,1e-6,1e-6) == GEO_TRUE)
    {
     GEO_VEC_COPY(&AllKirinukiCrv[i].circle.pnt1, &TemVector);
     tem.push_back(AllKirinukiCrv[i]);
     temEname.push_back(AllKirinukiAds[i]);
     itDel = AllKirinukiCrv.begin()+i;
     AllKirinukiCrv.erase(itDel);
     itDel2 = AllKirinukiAds.begin()+i;
     AllKirinukiAds.erase(itDel2);
     break;
    }
    else
    {
     continue;
    }
   }
   else
   {
    return 0;
   }
   }
   if(i == AllKirinukiCrv.size())
   {
    break;
   }
  } 
  GropuKirinukiCrv.push_back(tem);
  GroupKirinukiAds.push_back(temEname);
  tem.clear();
  temEname.clear();
 }
 
 return 0;
}

你可能感兴趣的:(iterator,vector)