zjx
zjx
发布于 2025-10-20 / 6 阅读
0
0

erase 和 remove_if的使用

在C++中,erase和remove_if是用于容器的常用算法。erase用于从容器中删除元素,remove_if用于移除满足特定条件的元素。以下是它们的使用方法:

erase

erase函数用于从容器中删除指定位置的元素或整个范围的元素。下面是它的语法:

container.erase(position) // 删除单个元素
container.erase(start, end) // 删除范围内的元素

其中,position是一个迭代器,指向要删除的元素的位置,start和end也是迭代器,指向要删除的范围的开始和结束位置。

以下是一个示例代码:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.erase(vec.begin() + 2); // 删除第三个元素
    for (auto i : vec) {
        cout << i << " "; // 输出 1 2 4 5
    }
    return 0;
}

remove_if

remove_if函数用于移除满足特定条件的元素。下面是它的语法:

remove_if(start, end, condition) // 移除满足条件的元素

其中,start和end是迭代器,指向要移除元素的范围的开始和结束位置,condition是一个函数或函数对象,用于判断元素是否应该被移除。

以下是一个示例代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.erase(remove_if(vec.begin(), vec.end(), [](int _pv){return _pv < 3; }), vec.end());//移除vec中小于3的数
    for (auto i : vec) {
        cout << i << " "; // 输出 3,4,5
    }
    return 0;
}


评论