请问这个函数,while版本为什么不能正确的执行

请教这个函数,while版本为什么不能正确的执行voidinitList(list string&slist,constvector string&sve

请教这个函数,while版本为什么不能正确的执行
void   initList(list <string>   &slist,   const   vector <string>   &svec)
{
  vector <string> ::const_iterator   cit   =   svec.begin();

//   while(cit   !=   svec.end())
//   {
//   slist.push_front(*cit);
//   }

cit   =   svec.begin();
for   (;   cit   !=   svec.end();   ++cit)
{
slist.push_back(*cit);
}
}
程序一直处于的处理状态,而for版本可以正确的执行,跟踪发现cit   !=   svec.end()可能存在问题,但实在不理解
高手多多指教

[解决办法]
你在for循环中有++cit,
而在while中没有改变cit,当然退不出来