福清建设局网站,购物网站制作样例,编程猫官方网站,建设电动摩托车官网remove 和 erase 的区别
以容器vector来说明remove和erase的区别
在STL中#xff0c;vector容器也提供了remove()和erase()函数#xff0c;用于从vector中删除元素。虽然这两个函数都可以实现删除元素的功能#xff0c;但是它们之间还是有一些区别的。
remove()
remove(…remove 和 erase 的区别
以容器vector来说明remove和erase的区别
在STL中vector容器也提供了remove()和erase()函数用于从vector中删除元素。虽然这两个函数都可以实现删除元素的功能但是它们之间还是有一些区别的。
remove()
remove()函数用于删除vector中指定的值函数原型如下
void remove(const T value);其中value表示要删除的值。
调用remove()函数时它会遍历整个vector将与value相等的所有元素删除。
需要注意的是remove()函数并不会改变vector的大小而是将所有要删除的元素移动到vector的末尾并返回一个指向新的末尾元素的迭代器。
因此如果想要删除所有与value相等的元素必须再次调用erase()函数来删除这些元素。
erase()
erase()函数用于删除vector中指定位置的元素函数原型如下
void erase(iterator position);
void erase(iterator first, iterator last);其中position表示要删除元素的位置first和last表示要删除元素的范围。
调用erase()函数时它会从vector中删除指定位置的元素或者删除[first, last)范围内的所有元素。
erase()函数会真正地删除元素并将后面的元素向前移动来填补空缺同时改变vector的大小返回一个指向被删除元素的下一个元素的迭代器。
因此remove()函数通常用于删除指定值而erase()函数通常用于删除指定位置或范围内的元素。
在删除元素时如果需要改变vector的大小则应该使用erase()函数否则应该使用remove()函数。
调用了remove()函数删除值为5的元素
myVector.erase(remove(myVector.begin(), myVector.end(), 5), myVector.end()); // 删除值为5的所有元素