这是一个古老的话题,今天拿来再炒一下,原因是我又用错了。
查阅各种 comments 以及根据我自己的使用经验,当在 vector 中 查找并 删除 其中多个元素时,我发现主要有两种方法:
// ------ Sample 1:
for ( vector<int>::iterator it = m_vecIDSet.begin(); it != m_vecIDSet.end(); )
{
vector<int>::iterator it_tmep = it;
++it;
int nID_in_set = *it_tmep;
if ( nID_in_set == nID_to_find )
{
m_vecIDSet.erase( it_tmep );
}
}
// ------ Sample 2:
for ( vector<int>::iterator it = m_vecIDSet.begin(); it != m_vecIDSet.end(); )
{
int nID_in_set = *it;
if ( nID_in_set == nID_to_find )
it = m_vecIDSet.erase( it );
else
++it;
}
两种方法看似都很好,但是经过我的实验&#