vector erase 在有循环的情况下要进行K--
例如:
for (int k = 0; k < vec.size(); k++)
{
if (vec[k] < 100)
{
vec.erase(vec.begin() + k);//要删除满足if条件的vec[k]
k--;
}
因为
vec.erase(vec.begin() + k)
操作后,第K个元素被删了,这个储存位置就空出来,那么第K个元素之后的元素相应的向前挪动,比如第一个元素被删了,那么第一个元素之后的元素向前挪动一个位置,第二个元素现在就在第一个元素的位置,那么如果第二个元素满足if条件的话,就执行erase操作,此时删除的是第二个储存位置的元素,而不是第二个元素,此时第二个储存位置的元素应该对应于原来的第三个元素。