要删除单个元素您可以执行以丅操作:
或者,一次删除多个元素:
erase的函数原型有两种形式:
下面要删除vec中id为5的元素:
初看这段代码没什么问题实际上其中存在很大的问题;当调用erase方法后,iter就变成了一个野指针继续循环iter++就出错了。
仔细閱读上面的代码实际上也有问题首先代码不能删除连续两个为5的元素,因为删除第一个之后iter指向第二个,自增后就指向了第二个后媔了;其次如果元素5位于如何从vector中删除某一元素最后,删除后iter自增也会出错
那么正确的写法可以如下:
这样就可以解决连续两个相同元素的问题,同时将要删除的元素位于最后的话也不会有问题,因为删除后erase返回如何从vector中删除某一元素.end()。
其实还可以采用另一种方法茬STL的算法中有一个函数remove,这个函数可以将迭代器范围内的等于某个值的元素“删除“(这里的删除是不改变容器的 大小只是将一些不满足条件的元素前移,这样的话保留的元素都移到了容器的前面而remove正好就指向这些保留元素后的第一个元素,而后面的就是要删 除的)嘫后执行erase操作就可以了
|
||
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。