void printLine(const LIST_LINE &listLine)
{
std::cout<<"printLine:";
for (LIST_LINE::const_iterator itr=listLine.begin();itr!=listLine.end();++itr)
{
if (itr!=listLine.begin())
{
std::cout<<",";
}
std::cout<<*itr;
}
std::cout<<std::endl;
}
int listObjDifPos(const LIST_LINE& list,const std::vector<unsigned int>& vec_tar)
{
bool bStart=false;
unsigned int uTmpPos=0;
for (LIST_LINE::const_iterator itr=list.begin();itr!=list.end();++itr)
{
if (bStart && std::find(vec_tar.begin(),vec_tar.end(),*itr)!=vec_tar.end())
{
bStart=false;
break;
}
else if (!bStart &&std::find(vec_tar.begin(),vec_tar.end(),*itr)!=vec_tar.end())
{
++uTmpPos;
bStart=true;
} if (bStart)
{
++uTmpPos;
}
}
return uTmpPos;
}
bool someLine(const LIST_LINE &LIST_LINE1,const LIST_LINE &LIST_LINE2)
{
if (LIST_LINE1.size()!=LIST_LINE2.size())
{
return false;
} LIST_LINE::const_iterator itr1=LIST_LINE1.begin();
LIST_LINE::const_iterator itr2=LIST_LINE2.begin();
while (itr1 !=LIST_LINE1.end())
{
if (*itr1!=*itr2)
{
return false;
} ++itr1;
++itr2;
} return true;
}
void getShortLen(std::list<LIST_LINE>& all_Possible_Line,const std::list<LIST_LINE>& allLine)
{
//得到所ù有瓺可é能ü的线?路·
for (std::list<LIST_LINE>::const_iterator itr1=allLine.begin();itr1!=allLine.end();++itr1)
{
const LIST_LINE &LIST_LINE1=*itr1;
for (LIST_LINE::const_iterator itr2=LIST_LINE1.begin();itr2!=LIST_LINE1.end();++itr2)
{
unsigned int uTmpPlatform1=*itr2;
//如果?这a个?站?存在ú,但不?是上面?这a条线?路·。£就í加ó入的可é能ü的线?路·中D
for (std::list<LIST_LINE>::const_iterator itr3=allLine.begin();itr3!=allLine.end();++itr3)
{
const LIST_LINE &LIST_LINE2=*itr3;
for (LIST_LINE::const_iterator itr4=LIST_LINE2.begin();itr4!=LIST_LINE2.end();++itr4)
{
unsigned int uTmpPlatform2=*itr4;
if (uTmpPlatform2==uTmpPlatform1 && !someLine(LIST_LINE1,LIST_LINE2))
{
all_Possible_Line.push_back(LIST_LINE1);
all_Possible_Line.push_back(LIST_LINE2); LIST_LINE::const_iterator itrKeyPos1=std::find(LIST_LINE1.begin(),LIST_LINE1.end(),uTmpPlatform1);
LIST_LINE::const_iterator itrKeyPos2=std::find(LIST_LINE2.begin(),LIST_LINE2.end(),uTmpPlatform2);
LIST_LINE tmpLine1;//左哩甛uinput2边
tmpLine1.insert(tmpLine1.begin(),LIST_LINE1.begin(),itrKeyPos1);
LIST_LINE::const_reverse_iterator rItr1=LIST_LINE2.rbegin();
while (*rItr1!=*itrKeyPos1)
{
++rItr1;
}
while (rItr1!=LIST_LINE2.rend())
{
tmpLine1.push_back(*rItr1);
++rItr1;
}
all_Possible_Line.push_back(tmpLine1); LIST_LINE tmpLine2;//右癨uinput2边
tmpLine2.insert(tmpLine2.begin(),LIST_LINE1.begin(),itrKeyPos1);
tmpLine2.insert(tmpLine2.end(),itrKeyPos2,LIST_LINE2.end());
all_Possible_Line.push_back(tmpLine2); LIST_LINE tmpLine3; //目?标括篭uinput2左哩甛uinput2边
tmpLine3.insert(tmpLine3.begin(),LIST_LINE2.begin(),itrKeyPos2);
LIST_LINE::const_reverse_iterator rItr3=LIST_LINE1.rbegin();
while (*rItr3!=*itrKeyPos1)
{
++rItr3;
}
while (rItr3!=LIST_LINE1.rend())
{
tmpLine3.push_back(*rItr3);
++rItr3;
} all_Possible_Line.push_back(tmpLine3); LIST_LINE tmpLine4; //目?标括篭uinput2右癨uinput2边
tmpLine4.insert(tmpLine4.begin(),LIST_LINE2.begin(),itrKeyPos2);
tmpLine4.insert(tmpLine4.end(),itrKeyPos1,LIST_LINE1.end());
all_Possible_Line.push_back(tmpLine4);
}
}
}
}
}
}