采用交换的方法,减少元素移动次数
void eraseNegative(vector<int>& vect)
{
vector<int>::iterator iter = vect.begin();
for(; iter != vect.end(); ++iter)
{
if(*iter < 0)
{
vector<int>::iterator pos = vect.end() - 1;
while(iter != pos && *pos < 0)
{
vect.erase(pos);
--pos;
}
if(iter != pos)
{
*iter = *pos;
vect.erase(pos);
}
else
{
vect.erase(pos);
break;
}
}
}
}