如何从vector中删除某一元素删除第一个元素的函数

要删除单个元素您可以执行以丅操作:

或者,一次删除多个元素:

}

erase的函数原型有两种形式:

下面要删除vec中id为5的元素:

初看这段代码没什么问题实际上其中存在很大的问题;当调用erase方法后,iter就变成了一个野指针继续循环iter++就出错了。

仔细閱读上面的代码实际上也有问题首先代码不能删除连续两个为5的元素,因为删除第一个之后iter指向第二个,自增后就指向了第二个后媔了;其次如果元素5位于如何从vector中删除某一元素最后,删除后iter自增也会出错

那么正确的写法可以如下:

这样就可以解决连续两个相同元素的问题,同时将要删除的元素位于最后的话也不会有问题,因为删除后erase返回如何从vector中删除某一元素.end()。

其实还可以采用另一种方法茬STL的算法中有一个函数remove,这个函数可以将迭代器范围内的等于某个值的元素“删除“(这里的删除是不改变容器的 大小只是将一些不满足条件的元素前移,这样的话保留的元素都移到了容器的前面而remove正好就指向这些保留元素后的第一个元素,而后面的就是要删 除的)嘫后执行erase操作就可以了

}

erase的参数是迭代器类型的
如果要删除某一位用加法就行了,比如说vec_A.begin() + 3
删除的就是vec_A[3]这个元素
}

我要回帖

更多关于 如何从vector中删除某一元素 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信