vector删除元素erase和通用算法remove
2010-03-23 11:11
281 查看
vector::erase()和algorithm中的remove函数都可以用来删除vector中的元素。
但是其中也有些区别。
erase函数的定义,通过迭代器来删除单个或者范围的元素
但是其中也有些区别。
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存放的是指向动态创建对象的指针,那么
必须确保指向的对象能够释放。
相关文章推荐
- effective stl:如果确实需要删除元素,则需要在remove这一类算法之后调用erase
- 为什么vector的remove_if实际上并没有删除元素,而要配合erase使用
- vector删除元素之pop_back(),erase(),remove()
- remove/remove_if算法配合容器的erase方法实现容器删除元素功能
- erase删除后移动元素改进算法
- vector用erase删除元素时,被删元素的析构函数会被调用很多次
- 删除vector容器中的对象元素的三种方法:pop_back, erase与remove算法
- 设计实现mini_vector中的插入和删除算法,要求在指定位置插入、删除元素
- vector中使用erase删除元素
- vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次?
- vector用erase删除元素时,为什么被删元素的析构函数会被调用更多次?
- C++/STL用erase删除元素(vector,deque),(list,set,map)
- 删除vector容器中的对象元素的三种方法:pop_back, erase与remove算法
- vector用erase连续删除元素怎么会出错
- leetcode:Remove Element (删除给定元素)【面试算法题】
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 【LeetCode-面试算法经典-Java实现】【203-Remove Linked List Elements(删除单链表中的元素)】
- c语言:【顺序表】静态顺序表的删除指定位置元素Erase、删除指定元素Remove
- vector用erase删除元素时,为什么被删元素的析构函数会被调用多次?
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。