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存放的是指向动态创建对象的指针,那么必须确保指向的对象能够释放。

vector erase remove 区别

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部