STL中的remove问题

原创 2011年01月08日 23:57:00

STL中有个通用算法remove,remove在对list进行修改时,如定义好了一个容器coll,remove(coll.begin(),coll.end(),n));经过这个操作之后,在对不了解STL的人眼中,容器中 的n元素被删除,容器的size肯定也减少相应的个数。但是,情况并不是这样,经过remove操作后,容器中有变化时肯定的,但是,容器的个数并没有变化,变化的是容器中的顺序。

remove对容器(这里单纯指list,其他容器还没有试过的)操作后具体的改变如下:如remove(coll.begin(),coll.end(),n)),在这之后,容器的个数不变,remove对容器中的n元素进行删除,n的位置被后一个元素代替,然后容器中若n出现的次数是2,那么,remove返回的是之前容器中的最后一个元素,但是这个元素和修改后的容器中的最后那个元素距离相差正好是2(如果n出现的次数是3,4...,那距离相差一次类推),而出现的元素是相应的最后2个数(3,4...)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

stl 关于erase,remove,元素删除

你要erase的元素很容易识别。它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素。要除去那些元素,你要做的所有事情就是用那两个迭代器调用erase的区间形式(参见条款5 )。因为r...

从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)

一、移除性算法 (remove)  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25...

STL Vector remove()和erase()的使用

转自:http://blog.csdn.net/ozwarld/article/details/7761519 STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是...

九、STL算法-删除算法(unique、remove)

STL算法-删除算法

vector中的删除,erase和remove的小疑惑--【STL】

对于vector容器的使用,平时只是简单的进行遍历查找一下,未曾进行其它操作,这不,今天出了一点差错; earse方法的操作是将此时的节点删除,然后指向被删除节点的下一个: 如对数据1 6 6 4 7...
  • xjm199
  • xjm199
  • 2014-05-01 14:29
  • 1632

STL remove和erase

remove   算法描述:查找的得到第一个元素的位置,然后从此位置开始遍历容器,将后面的元素依次前移,跳过和value相同值的元素,也就是说,所有和value相同值的元素都会被覆盖,而其他的元素都会...

STL Vector remove()和erase()的使用

STL Vector remove()和erase()的使用 http://blog.csdn.net/yockie/article/details/7859330 STL中remove()只是将...

STL之remove算法详解

算法描述接口template ForwardIterator remove( ForwardIterator _First, ForwardIterator _Last, ...

STL 之 remove方法

先看一段程序(源自程序员面试宝典)

STL Vector remove()和erase()的使用

STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)