2011年2月17日 星期四

vector::erase和iterator的問題

vector 在erase後,原本的iterator會失效 (被移除了)
所以在使用for-loop + erase要注意

std::vector::erase()會回傳一個有效的iterator


example::

std::vector<int> myVector;
std::vector<int>::iterator it;

for(it = myVector.begin(); it !=myVector.end();)
{
   if(*it != 1)
         it = myVector.erase(it);
   else
      ++it;

}

沒有留言:

張貼留言