📅  最后修改于: 2023-12-03 15:06:52.205000             🧑  作者: Mango
当我们需要查找数组中所有可以被N整除的元素时,可以使用STL中的find_if
算法配合lambda表达式实现。
下面是一个示例程序,该程序使用C++11中的lambda表达式和STL中的find_if
算法查找可以被3整除的数组元素。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> arr = { 3, 4, 6, 9, 12, 15, 18, 21 };
int N = 3;
auto i = std::find_if(arr.begin(), arr.end(), [=](int e) {
return e % N == 0;
});
while (i != arr.end()) {
std::cout << *i << " ";
i = std::find_if(++i, arr.end(), [=](int e) {
return e % N == 0;
});
}
return 0;
}
代码解释:
arr
,其中包含需要查找的元素。N
,用于保存整除的数。find_if
算法查找第一个可以被N整除的元素,使用lambda表达式实现对元素的判断,并将结果保存在变量i中。find_if
算法查找下一个可以被N整除的元素,直到找到数组末尾。运行以上代码,输出结果如下:
3 6 9 12 15 18 21
通过STL中的find_if
算法和lambda表达式,我们可以方便地查找数组中满足条件的元素。这种方法在处理大型数组时特别有用,能够快速地查找需要的元素,提高程序效率。