void EraseVal(vector<int>&vec, int val)
{
if (vec.empty()) return;
auto itor = vec.begin();
while (itor != vec.end())
{
if (val == *itor)
itor = vec.erase(itor);
else
itor++;
}
}
void EraseValEx(vector<int>&vec, int val)
{
if (vec.empty()) return;
auto itor = stable_partition(vec.begin(), vec.end(), [val](int value) {return val == value; });
vec.erase(itor, vec.end());
}
EraseVal为利用vector中的erase进行删除,vector::erase复杂度为线性,删除之后的内容会依次往前一步
EraseValEx利用STL的算法进行处理,先进行分割,再进行处理,分割后的顺序维持原状不变,效率相比EraseVal,有极大提升