使用C++中的STL算法remove_if
可以删除两个数字范围内的元素。
remove_if
函数定义在<algorithm>
头文件中,它接受一对迭代器表示的范围,并接受一个谓词函数作为参数。该函数将删除范围内满足谓词条件的元素,并返回一个新的迭代器指向删除后范围的末尾。
下面是使用remove_if
删除两个数字范围内元素的示例代码:
#include <iostream>
#include <algorithm>
#include <vector>
bool isInRange(int num, int lowerBound, int upperBound) {
return num >= lowerBound && num <= upperBound;
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int lowerBound = 3;
int upperBound = 7;
// 删除范围内满足条件的元素
auto newEnd = std::remove_if(nums.begin(), nums.end(), [&](int num) {
return isInRange(num, lowerBound, upperBound);
});
// 删除后的元素
nums.erase(newEnd, nums.end());
// 输出结果
for (const auto& num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
1 2 8 9 10
在这个例子中,使用自定义的isInRange
函数作为谓词函数,判断元素是否在指定的范围内。remove_if
会将满足条件的元素移动到容器末尾,并返回一个新的迭代器指向新的范围结尾。最后,通过调用erase
函数删除移动到末尾的元素,得到最终结果。
腾讯云相关产品和产品介绍链接地址:
请注意,以上仅是示例链接,实际使用时需要根据具体需求选择合适的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云