还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

vector删除元素erase和通用算法remove区别

来源:     2015-11-02 22:32:18    人气:     我有话说( 0 人参与)

vector::erase()和algorithm中的remove函数都可以用来删除vector中的元素。但是其中也有些区别。erase函数的定义,通过迭代器来删除单个或...

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 区别

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: