c++ remove_if与erase结合正确吗

avatar
作者
猴君
阅读量:0

在C++中,remove_if和erase通常结合使用来删除容器中满足特定条件的元素。remove_if函数用于移动满足条件的元素到容器末尾并返回一个迭代器,然后可以使用erase函数删除这些元素。

例如,可以这样使用remove_if和erase来删除vector中的偶数元素:

#include <iostream> #include <vector> #include <algorithm>  int main() {     std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};      auto it = std::remove_if(vec.begin(), vec.end(), [](int num) {         return num % 2 == 0;     });      vec.erase(it, vec.end());      for (int num : vec) {         std::cout << num << " ";     }      return 0; } 

上面的代码首先使用remove_if函数将偶数元素移动到vector的末尾,然后使用erase函数删除这些元素。最后输出剩余的奇数元素。

需要注意的是,remove_if只是将满足条件的元素移动到容器末尾,并没有真正删除元素,所以需要结合erase来实际删除这些元素。

广告一刻

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