要根据元素的某些属性删除std::vector中的元素,可以使用std::remove_if和std::vector::erase两个函数组合。
首先,需要定义一个谓词函数,该函数接受vector中的元素,并返回一个布尔值,表示是否需要删除该元素。例如,如果要删除vector中值为3的元素,可以定义一个谓词函数如下:
bool is_three(int n) {
return n == 3;
}
然后,使用std::remove_if将需要删除的元素移到vector的末尾,并返回指向第一个需要删除元素的迭代器。最后,使用std::vector::erase函数删除这些元素。
下面是一个完整的示例代码:
#include<iostream>
#include<vector>
#include<algorithm>
bool is_three(int n) {
return n == 3;
}
int main() {
std::vector<int> v = {1, 2, 3, 4, 3, 5, 6};
// 使用std::remove_if将需要删除的元素移到vector的末尾
auto it = std::remove_if(v.begin(), v.end(), is_three);
// 使用std::vector::erase删除这些元素
v.erase(it, v.end());
// 输出结果
for (auto n : v) {
std::cout << n << " ";
}
return 0;
}
输出结果为:
1 2 4 5 6
在这个示例中,我们使用了std::remove_if和std::vector::erase函数来删除vector中值为3的元素。
领取专属 10元无门槛券
手把手带您无忧上云