vector删除元素erase和通用算法remove区别
vector::erase()和algorithm中的remove函数都可以用来删除vector中的元素。
但是其中也有些区别。
erase函数的定义,通过迭代器来删除单个或者范围的元素
iterator erase(
iterator _Where
);
iterator erase(
iterator _First,
iterator _Last
);
remove函数的定义
template<class _FwdIt, class _Ty> inline
_FwdIt remove(_FwdIt _First, _FwdIt _Last, const _Ty% _Val);
与erase不同的是,remove函数删除元素后并不会改变vector的大小,只是把后面的元素往前移,并返回一个指向vector末尾的新迭代器。
这样,如果用remove后,还用vector的begin和end仍旧会得到原来序列的大小范围的。
MARK:使用erase和remove函数都要注意删除元素时必须注意是否需要释放内存。如果vector存放的是指向动态创建对象的指针,那么必须确保指向的对象能够释放。