在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;
}