✨vector的remove和erase函数的区别_vector remove
在C++中,`std::vector` 是一种非常常用的容器类型,而 `remove()` 和 `erase()` 函数是操作它的两个重要方法,但它们的作用和使用方式却大有不同!🧐
首先,`remove()` 并不是真的删除元素,而是将所有等于指定值的元素移到向量的末尾,并返回指向第一个被移动元素的迭代器。换句话说,它只是重新排列了元素顺序,而并未真正减少向量的大小。👀
而 `erase()` 才是真正的“杀手锏”。它可以根据特定位置或范围移除元素,并且直接调整向量的实际大小。例如,`vec.erase(vec.begin())` 可以删除第一个元素,而 `vec.erase(pos, end())` 能够删除从某个位置到末尾的所有元素。🔥
举个例子:假设我们有一个包含 `{1, 2, 3, 2, 4}` 的向量,调用 `vec.remove(2)` 后,虽然所有 `2` 被移到最后,但向量大小依然是5;而如果再调用 `vec.erase(vec.end()-2, vec.end())`,才能真正删除多余的 `2`,使向量变为 `{1, 2, 3, 4}`。💡
因此,在实际开发中,通常需要结合使用这两个函数来达到清理向量的目的。掌握它们的区别,会让你的代码更高效!🚀
免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。