remove()函数在c++容器中的表现如何

avatar
作者
筋斗云
阅读量:0

在C++的STL库中,remove()函数并不是直接用于删除元素或改变容器大小的。实际上,它是一个算法,主要用于将不需要删除的元素移到容器的前面,并返回一个迭代器,该迭代器指向“新”逻辑结束的位置。这个操作并不会改变容器的大小或释放任何内存。

这里有一个简单的例子来说明remove()函数的用法:

#include <iostream> #include <vector> #include <algorithm>  int main() {     std::vector<int> v = {1, 2, 3, 2, 4, 2, 5};      // 使用remove()函数将所有值为2的元素移到前面     auto newEnd = std::remove(v.begin(), v.end(), 2);      // 现在v包含{1, 3, 4, 5, 2, 2, 2},但是实际上只有5个元素     // 因为值为2的元素已经被移到了前面,并且newEnd指向了最后一个非2元素的位置      // 如果你想真正地删除那些值为2的元素,并缩小容器的大小,你需要调用erase()函数     v.erase(newEnd, v.end());      // 现在v包含{1, 3, 4, 5}      for (int x : v) {         std::cout<< x << ' ';     }      return 0; } 

在这个例子中,remove()函数将所有值为2的元素移到了容器的前面,并返回了一个指向最后一个非2元素的迭代器。然后,我们使用erase()函数真正地删除了那些值为2的元素,并缩小了容器的大小。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!